2013-02-28 88 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