与版本字典的接口
时间: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)

