python 继承函数在 init 期间重写

标签 python inheritance initialization overriding

Father 类可以以某种方式看到 Child 类的方法。我推测在 init 期间,Father 只能使用内部方法

但显然我错了。这是代码:

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!

最佳答案

这就是 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 .

关于python 继承函数在 init 期间重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140568/

相关文章:

ios - plist 中的变量替换 - 我可以定义一次值并在手动维护的 plist 中重用它吗?

java - 具有来自继承的抽象类的值的构造函数,该抽象类实现了一个接口(interface)

c# - 在 C# 中用 GA 进行时间表调度的二进制数组中的基因初始化

c++ - 如何在类初始值设定项中设置 union ?

c++ - CPP中原始数据类型的构造函数初始化

python - 将目录复制到另一个目录中

python - Groupby 当给定每个组的起始位置索引时

python - 在 2 个 id 上对 Pandas 中的重复项进行分组,并以不同方式转换其余列

c++ - 用于树莓派的 C 语言 GPIO 编程

java - 为什么我不能用Number接口(interface)计算?