与版本字典的接口
时间:2020-03-06 15:01:47 来源:igfitidea点击:
我有一个版本化的文档存储,我想通过类似界面的字典来访问它。
常见用法是访问最新修订版(get,set,del),但也应该能够访问特定修订版(键始终为str / unicode或者int)。
from UserDict import DictMixin class VDict(DictMixin): def __getitem__(self, key): if isinstance(key, tuple): docid, rev = key else: docid = key rev = None # set to tip rev print docid, rev # return ... In [1]: d = VDict() In [2]: d[2] 2 None In [3]: d[2, 1] 2 1
这个解决方案有点棘手,我不确定它是否是一个干净易懂的界面。我应该提供功能吗
def getrev(self, docid, rev): ...
反而?
解决方案
是的,提供不同的API以获取不同的版本。可以使用单个方法调用来检索特定修订版本的特定项目,也可以使用方法调用来获取特定修订版本的"视图",然后可以像普通字典一样访问该方法,具体取决于这种"视图"是否看到很多用处。或者两者兼而有之,考虑使用dict-view解决方案无论如何都需要某种方式来获取特定修订的项目:
class RevisionView(object): def __init__(self, db, revid): self.db = db self.revid = revid def __getitem__(self, item): self.db.getrev(item, self.revid)