質問
ZODBを提供 PersistentList
や PersistentMapping
, してしまいましたが、まず私が、 PersistentSet
.に書いた、迅速クラスのミラーに古代 PersistentList
からZODB2.ではありません 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.
解決
なご利用の持続設定のクラスを提供し BTree 図書館ZODB.が4のような授業が可能です。IITreeSetとIOTreeSet管理の整数OITreeSetとOOTreeSet管理セットの任意のオブジェクト。に対応するものであることをBTreeの授業IIBTree,IOBTree,OIBTreeとOOBTreeます。その優位性セットの実施Pythonに組み込はその高速検索メカニズム(そのBTree)とその持続性です。
ここではサンプルコード:
>>> from BTrees.IIBTree import IITreeSet, union, intersection
>>> a = IITreeSet([1,2,3])
>>> a
<BTrees._IIBTree.IITreeSet object at 0x00B3FF18>
>>> b = IITreeSet([4,3,2])
>>> list(a)
[1, 2, 3]
>>> list(b)
[2, 3, 4]
>>> union(a,b)
IISet([1, 2, 3, 4])
>>> intersection(a,b)
IISet([2, 3])
他のヒント
すべての属性要求の内部設定:
class PersistentSet(Persistent):
def __init__(self):
self.inner_set = set()
def __getattribute__(self, name):
try:
inner_set = Persistent.__getattribute__(self, "inner_set")
output = getattr(inner_set, name)
except AttributeError:
output = Persistent.__getattribute__(self, name)
return output
将来の読み取りを行い、そう思ってやってきましたお若干の改善は、既に提案した回答...
カスタム持続設定クラス
class PersistentSet(Persistent):
def __init__(self, *args, **kwargs):
self._set = set(*args, **kwargs)
def __getattr__(self, name):
return getattr(self._set, name)
持続設定のクラスからの図書館
from BTrees.OOBTree import OOSet
参照
所属していません StackOverflow