2017-05-07 9 views
0

私は親インスタンスの動的な値を継承する必要がある場合、Pythonが可変a .I've親のinitコンストラクタで定義されても持っている値を取得superを使用しようとしたインスタンス変数を継承Parentオブジェクトを渡そうとしました。私はコードの下に使用している場合変数の値が変更を動的

class Parent(object): 
    def __init__(self): 
     self.a = 1 

    def test(self): 
     self.a = 2 


class Child(Parent): 
    def __init__(self): 
     super(Child, self).__init__() 


class Child1(Parent): 
    def __init__(self, parent): 
     self.a = parent.a 


p = Parent() 
c = Child() 
c1 = Child1(p) 
p.test() 
print p.a #2 
print c.a #1 
print c1.a #1 

以下のコードを参照してください、問題はsolved.Howeverは、初期化後に変更された親のインスタンス変数の値を取得する方法があります取得します。

c.test() 
print c.a #2 
c1.test() 
print c1.a #2 

この問題の解決方法をご提案ください。

答えて

1

ここでは委任をする必要があります。 self.aに直接parent.aの値を代入するのではなく、の親のを格納し、要求に応じて親の値aを取得するプロパティを定義する必要があります。

class Child1(object): 
    def __init__(self, parent): 
     self.parent = parent 

    @property 
    def a(self): 
     return self.parent.a 
+0

ありがとうございました。 –