2015-03-02 30 views
0

我在Python中有繼承問題。我已經自己更改了ParentClass的成員變量。問題是ChildClass無法訪問ParentClass的成員變量的新值。 請看看這個簡單的例子:ChildClass無法訪問ParentClass成員變量的新值

class Parent(object): 

    def __init__(self): 

     self.name = "Tommy" 

    def changeParentName(self): 

     self.name = "Jack" 


class Child(Parent): 

    def parentName(self): 

     print self.name  

parent = Parent() 
parent.changeParentName() 
child = Child() 
child.parentName() 

如果你嘗試上面的例子,你會看到這樣的結果:

Tommy 

但我希望看到傑克,而不是湯米。 我有這個問題與Python 2.7.9 任何人都可以解釋這個問題或給我們一個解決方案? ChildClass調用ParentClass的構造函數嗎?所以self.name再等於Tommy。 其實,我在我的項目中遇到了這個問題,但是我已經用上面的例子解釋了我的問題

+2

您需要詳細瞭解繼承,類和實例,您的誤解與python無關。 – najjarammar 2015-03-02 18:16:46

+0

我從來沒有責怪python編程語言。這是我的誤解。我應該多學習OOP。 – 2015-03-02 18:45:19

回答

0

這兩個對象沒有任何關係。

>>> parent = Parent() 
>>> parent.name 
'Tommy' 
>>> parent.changeParentName() 
>>> parent.name 
'Jack' 

>>> child = Child() 
>>> child.name 
'Tommy' 
>>> child.changeParentName() 
>>> child.name 
'Jack' 

當你聲明你的類Child你正在建立繼承

class Child(Parent): 

這意味着ChildParent。這並不意味着Parent有一個Child

請參閱this similar question討論繼承與組合。

+0

非常感謝您的回答。我明白了。我認爲我的問題很奇怪。 – 2015-03-02 18:54:34