¿Cuál es la mejor manera de personalizar la cadena de adquisición de un objeto Zope?

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

  •  28-10-2019
  •  | 
  •  

Pregunta

Esencialmente, quiero verificar otro objeto para ver si se establece un atributo antes de procesar los elementos en object.aq_chain.

Parece que no puedo evitar la recursión infinita al anular GetAttr y GetAttribute.

ACTUALIZAR

Ejemplo:

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

En caso de que no se vea sin decir, hay una API en la que estoy tratando de trabajar.

¿Fue útil?

Solución

Para construir cadenas de adquisición, debe usar el __of__ Método del envoltorio de adquisición:

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

Ver el Capítulo de adquisición de la documentación de Zope2 para más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top