Как лучше всего настроить цепочку приобретения объекта Zope?
-
28-10-2019 - |
Вопрос
По сути, я хочу проверить другой объект, чтобы увидеть, установлен ли атрибут там перед обработкой элементов в object.aq_chain.
Я не могу избежать бесконечной рекурсии при переопределении getattr и getattribute.
ОБНОВИТЬ
Пример:
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, в котором я пытаюсь работать.
Решение
Чтобы создать цепочки приобретения, вам нужно использовать __of__
Метод обертки приобретения:
>>> wrapped = child.__of__(parent2)
>>> assert wrapped.aq_parent is parent2
True
Увидеть Глава приобретения документации ZOPE2 Чтобы получить больше информации.
Не связан с StackOverflow