2013-02-28 76 views
1

不知何故,Father類可以看到Child類的方法。我推測只有內部方法可用於父親初始初始化期間python繼承函數覆蓋

但顯然我錯了。下面是代碼:

class Father(): 
    def __init__(self): 
     self.name=self.getName() 
     print "from Father ->", self.name 

    def getName(self): 
     return "father" 

class Child(Father): 
    def __init__(self):   
     Father.__init__(self) 
     self.name=self.getName() 
     print "from Child ->", self.name 

    def getName(self): 
     return "child" 

if __name__ == "__main__": 
    import sys, pprint 

    someone=Child() 

,輸出是

from Father -> child 
from Child -> child 

但我想獲得

from Father -> father 
from Child -> child 

任何思考如何改寫呢? Tnx!

+1

這是完全正常的行爲。 – 2013-02-28 16:28:34

回答

3

這是name-mangling目的:它可以讓你說: 「這個類的屬性」:

class Father(): 
    def __init__(self): 
     self.name=self.__getName() 
     print "from Father ->", self.name 
    def __getName(self): 
     return "father" 

class Child(Father): 
    def __init__(self):   
     Father.__init__(self) 
     self.name=self.__getName() 
     print "from Child ->", self.name 

    def __getName(self): 
     return "child" 

if __name__ == "__main__": 
    import sys, pprint 

    someone=Child() 

產量

from Father -> father 
from Child -> child 

欲瞭解更多信息,請參見也this post

+0

你是對的!感謝您的幫助! – user2120336 2013-02-28 16:31:53

+0

現在我需要弄清楚如何讓父類的所有者改變他的代碼。因爲我正在寫Child類......嗯...... – user2120336 2013-02-28 16:33:29