2017-05-07 75 views
0

我要繼承父實例的動態值可變a .I've嘗試使用super它得到其在init構造父的定義,並且還具有值嘗試傳遞父對象。Python的繼承實例變量時的變量的變化值動態

請參考下面

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

感謝它的工作。 –