ZODB bietet eine PersistentList
und eine PersistentMapping
, aber ich möchte eine PersistentSet
. Ich schrieb eine schnelle Klasse, die die alte PersistentList
von ZODB 2 widerspiegelt. Da es keine UserSet
in Python gibt, musste ich von der C-basierten integrierten set
erweitern.PersistentSet in ZODB 3
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
Der Code erzeugte eine error "mehr Basen Instanz Lay-out-Konflikt". Ich habe versucht, einen UserSet
Wrapper um set
zu erstellen, aber das hat das Problem auch nicht gelöst.
class UserSet(set):
def __init__(self):
self.value = set
def __getattribute__(self, name):
return self.value.__getattribute__(name
Schließlich habe ich importiert sets.Set
(ersetzt durch die eingebaute in set
), aber das scheint in C auch umgesetzt werden. Ich habe keine Set-Implementierungen auf PyPI gefunden, also bin ich jetzt in einer Sackgasse.
Was sind meine Optionen? Ich muss ein Set von Grund auf neu implementieren oder UserDict
verwenden und alle value
s wegwerfen.
Eigentlich funktioniert 'IITreeSet' nur mit Integer-Elementen ... –