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.

War es hilfreich?

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
scroll top