Was ist der beste Weg, um die Akquisitionskette eines Zope -Objekts anzupassen?
-
28-10-2019 - |
Frage
Im Wesentlichen möchte ich ein anderes Objekt überprüfen, um festzustellen, ob ein Attribut vor der Verarbeitung der Elemente in Object.aq_Chain festgelegt wird.
Ich kann nicht in unendlichem Rekursion bei Überschreibung von Getattr und GetatTribute zu vermeiden.
AKTUALISIEREN
Beispiel:
import ExtensionClass, Acquisition
class Folder(ExtensionClass.Base): pass
class File(Acquisition.Implicit): pass
parent1 = Folder()
parent1.foo = 1
parent2 = Folder()
parent2.foo = 2
child = File()
parent1.child = child
child.otherparent = parent2
print parent1.child.foo # prints 1, but i want it to print 2
Für den Fall, dass es nicht selbstverständlich ist, gibt es eine API, in der ich versuche zu arbeiten.
Lösung
Um Akquisitionsketten zu erstellen, müssen Sie die verwenden __of__
Methode der Erfassungswrapper:
>>> wrapped = child.__of__(parent2)
>>> assert wrapped.aq_parent is parent2
True
Siehe das Akquisitionskapitel der Zope2 -Dokumentation für mehr Informationen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow