У меня есть версионное хранилище документов, к которому я хочу получить доступ через интерфейс типа dict.
Обычно используется для доступа к последней ревизии (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):
...
вместо