ZODB 提供 aPersistentList
和 a PersistentMapping
,但我想要一个PersistentSet
. 我写了一个快速类,它反映了PersistentList
ZODB 2 中的古代。因为UserSet
在 Python 中没有,我不得不从基于 C 的内置set
.
class PersistentSet(UserSet, Persistent):
def __iand__(self, other):
set.__iand__(other)
self._p_changed = 1
...
...
...
def symmetric_difference_update(self, other):
set.symmetric_difference_update(other)
self._p_changed = 1
该代码产生了“多个基地有实例布局冲突”错误。我尝试在 周围创建一个UserSet
包装器set
,但这也没有解决问题。
class UserSet(set):
def __init__(self):
self.value = set
def __getattribute__(self, name):
return self.value.__getattribute__(name
最后,我导入sets.Set
了(被内置的 取代set
),但这似乎也是在 C 中实现的。我没有在 PyPI 上找到任何集合实现,所以我现在处于死胡同。
我有哪些选择? 我可能不得不从头开始实现一个集合,或者使用UserDict
并丢弃所有的value
s.