Python 版本化词典的接口
我有一个版本化的文档存储,我想通过类似dict的接口访问它。 通常的用法是访问最新版本(get、set、del),但也应该能够访问特定的版本(键总是str/unicode或int) 这个解决方案有点棘手,我不确定它是否是一个干净、可理解的界面。我应该提供一个函数吗Python 版本化词典的接口,python,Python,我有一个版本化的文档存储,我想通过类似dict的接口访问它。 通常的用法是访问最新版本(get、set、del),但也应该能够访问特定的版本(键总是str/unicode或int) 这个解决方案有点棘手,我不确定它是否是一个干净、可理解的界面。我应该提供一个函数吗 def getrev(self, docid, rev): ... 相反?是的,提供不同的API以获得不同的版本。一个methodcall用于检索特定修订的特定项目,或者一个methodcall用于获取特定修订的“视图”,然后
def getrev(self, docid, rev):
...
相反?是的,提供不同的API以获得不同的版本。一个methodcall用于检索特定修订的特定项目,或者一个methodcall用于获取特定修订的“视图”,然后您可以像普通dict一样访问该视图,这取决于这样的“视图”是否有多大用处。或者两者兼而有之,考虑到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)
以防万一,有人来到这里寻找版本化词典——我在本周早些时候将一个工作版本上传到github:github.com/jsbueno/extradict——并将“extradict”上传到pypi(关于这个问题,我使用.get和一个命名的版本参数来检索较旧的属性版本)
class RevisionView(object):
def __init__(self, db, revid):
self.db = db
self.revid = revid
def __getitem__(self, item):
self.db.getrev(item, self.revid)