This question already has answers here:
How do I call a parent class's method from a child class in Python?

(15 个回答)


5年前关闭。




我试图了解 Python 中的父类和子类是如何工作的,但我遇到了这个看似简单的问题:
class parent(object):

    def __init__(self):
        self.data = 42


class child(parent):

    def __init__(self):
        self.string = 'is the answer!'

    def printDataAndString(self):
        print( str(self.data) + ' ' + self.string )


c = child()
c.printDataAndString()

我期待字符串 42 是答案!但我明白了



我错过了什么?

我用 passsuper(parent,...) 进行了试验,但没有得到正确的结果。

最佳答案

由于您的 child 有自己的 __init__() 函数,因此您需要调用父类的 __init__() ,否则不会被调用。例子 -

def __init__(self):
    super(child,self).__init__()
    self.string = 'is the answer!'
super() from documentation -

所以 super() 的第一个参数应该是子类(你想调用其父类的方法),第二个参数应该是对象本身,即 self.因此, super(child, self)
Python 3.x 中,您可以简单地调用 -
super().__init__()
它会从正确的父类调用 __init__() 方法。

关于python - 从父类获取变量用于子类的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32371537/

10-10 10:59