概要:今ネストされたオブジェクトとSETATTR&GETATTR(はい、それはその時です)
class Inner(object):
def __init__(self, x):
self.x = x
class Outer(object):
def __init__(self, z):
self.inner = Inner(z)
o = Outer(10)
は、私は透過的に動作するように外部オブジェクトが欲しい - o
に設定されたすべての属性がo.inner
に設定する必要があり、ために同じ読み取り:o.something
は、実際にはo.inner.sommething
の値を返します。プロキシやリレーのようなもの。 Outer
ため
__getattr__
は、単純な&作品を思わ:
def __getattr__(self, item):
return getattr(self, item)
にはどうすれば__setattr__
を扱うでしょうか?私は、再帰エラーを引き起こさず、自分自身を憎んでしまうものを思い付くことができませんでした。
概念自体に欠陥がありますか?
(私が試した別のアプローチは、Inner
のOuter
サブクラスを作っていた - これは本当に審美的存在@classmethods
を果たしていませんでした、ではないに言及IDEは、それらの内部で迷子になり - 。いくつかの属性を解決することができないのは、それを残してみよう今のところおそらく?)
あなたは 'self.inner = Inner(z)'を意味しましたか?また、getattrメソッドはInner()からデータを返しますか?それが書かれている方法では、それはちょうど外部を参照するように見えます。 – gfortune
はい - 返されます。両方とも修正しました。ありがとう! – ntl0ve