如何调用超级构造函数?class A:
def __init__(self):
print("world")class B(A):
def __init__(self):
print("hello")B() # output: hello在我使用过的所有其他语言中,超级构造函数都是隐式调用的。如何在Python中调用它?我希望super(self)但这不管用。
3 回答
哆啦的时光机
TA贡献1779条经验 获得超6个赞
一种方法是调用A的构造函数并传递self
作为一个论点,就像这样:
class B(A): def __init__(self): A.__init__(self) print "hello"
这种风格的优点是它非常清楚。它叫A的首字母。缺点是它不能很好地处理菱形继承,因为您可能最终会两次调用共享基类的初始化器。
另一种方法是使用Super(),正如其他人所展示的那样。对于单继承,它所做的与让您调用父级的初始化项基本上是一样的。
但是,Super()在底层要复杂得多,有时在多个继承情况下可能会违反直觉。好的一面是,Super()可以用来处理钻石形状的继承。如果你想知道超级()做什么的细节,我找到了关于超级()是如何工作的最好的解释。
添加回答
举报
0/150
提交
取消