为了账号安全,请及时绑定邮箱和手机立即绑定

如何调用超级构造函数?

如何调用超级构造函数?

慕哥9229398 2019-10-13 08:04:06
如何调用超级构造函数?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()可以用来处理钻石形状的继承。如果你想知道超级()做什么的细节,我找到了关于超级()是如何工作的最好的解释。



查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 416 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信