質問

ZODBを提供 PersistentListPersistentMapping, してしまいましたが、まず私が、 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 投げ捨てをしてすべての values.

役に立ちましたか?

解決

なご利用の持続設定のクラスを提供し 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

参照

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top