Как лучше всего настроить цепочку приобретения объекта Zope? - PullRequest
0 голосов
/ 13 января 2012

По сути, я хочу проверить другой объект, чтобы увидеть, установлен ли там атрибут перед обработкой элементов в object.aq_chain.

Кажется, я не могу избежать бесконечной рекурсии при переопределении getattr и getattribute.

UPDATE

Пример:

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

Если это само собой разумеется, есть API, внутри которого я пытаюсь работать.

1 Ответ

0 голосов
/ 14 января 2012

Для построения цепочек приобретения необходимо использовать метод __of__ обертки Приобретения:

>>> wrapped = child.__of__(parent2)
>>> assert wrapped.aq_parent is parent2
True

См. Главу Приобретение документации Zope2 для получения дополнительной информации.

...