ZODB fournit un PersistentList
et un PersistentMapping
, mais j'aimerais un PersistentSet
. J'ai écrit une classe rapide qui reflète l'ancien PersistentList
de ZODB 2. Parce qu'il n'y a pas UserSet
en Python, j'ai dû étendre à partir de la set
intégré C-based.PersistentSet dans 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
Le code produit un "plusieurs bases ont par exemple un conflit lay-out" error. J'ai essayé de créer un wrapper UserSet
autour de set
, mais cela n'a pas résolu le problème non plus.
class UserSet(set):
def __init__(self):
self.value = set
def __getattribute__(self, name):
return self.value.__getattribute__(name
Enfin, je sets.Set
importé (remplacé par le set
intégré), mais qui semble être mis en œuvre en C, aussi. Je n'ai trouvé aucune implémentation sur PyPI, donc je suis dans une impasse maintenant.
Quelles sont mes options? Je peux avoir à mettre en œuvre un ensemble à partir de zéro ou utiliser UserDict
et jeter tous les value
s.
En fait, 'IITreeSet' ne fonctionne qu'avec des éléments entiers ... –