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__取得チェーンを構築するには、取得ラッパーのメソッドを使用する必要があります。

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

詳細については、Zope2 ドキュメントの取得の章を参照してください。

于 2012-01-14T11:51:16.383 に答える