Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 版本化词典的接口_Python - Fatal编程技术网

Python 版本化词典的接口

Python 版本化词典的接口,python,Python,我有一个版本化的文档存储,我想通过类似dict的接口访问它。 通常的用法是访问最新版本(get、set、del),但也应该能够访问特定的版本(键总是str/unicode或int) 这个解决方案有点棘手,我不确定它是否是一个干净、可理解的界面。我应该提供一个函数吗 def getrev(self, docid, rev): ... 相反?是的,提供不同的API以获得不同的版本。一个methodcall用于检索特定修订的特定项目,或者一个methodcall用于获取特定修订的“视图”,然后

我有一个版本化的文档存储,我想通过类似dict的接口访问它。 通常的用法是访问最新版本(get、set、del),但也应该能够访问特定的版本(键总是str/unicode或int)

这个解决方案有点棘手,我不确定它是否是一个干净、可理解的界面。我应该提供一个函数吗

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)