根据python中的继承,要覆盖构造函数并同时实现它,你可以使用类似的东西
class Dog :
def __init__(self, name) :
self.name = name
print("This is a dog named {}".format(self.name))
class Bingo(Dog) :
def __init__(self, name) :
super().__init__(self.name)
但是我注意到在我遇到的一些代码中,超级本身带有像
这样的论点 super(self, name).__init__()
所以,如果我可能会问,传递的参数在哪里,是父类还是什么。我发现很难把它包裹起来,我实际上在PyQt和PySide
中的代码上遇到了它答案 0 :(得分:0)
在Python 2.x中,您必须编写
class Bingo(Dog) :
def __init__(self, name) :
super(Dog, self).__init__(name)
因为super
需要超类名称(Dog
)和实例(self
)。超级__init__
是Dog.__init__
所以通常来自Bingo.__init__
args(例如名称),而不是你拥有它(self.name,不正确,因为还不存在)。
在Python 3.0中,您可以编写
class Bingo(Dog) :
def __init__(self, name) :
super().__init__(name)
因为super()
获得了额外的行为,因此可以为您找出Dog
和self
。