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

StackOverflow https://stackoverflow.com/questions/8855358

  •  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 Чтобы получить больше информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top