0

本质上,我想在处理 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。

4

1 回答 1

0

要构建采集链,您需要使用__of__Acquisition 包装器的方法:

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

有关详细信息,请参阅Zope2 文档的采集章节

于 2012-01-14T11:51:16.383 回答