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