猿问

如何调用超级构造函数?

如何调用超级构造函数?

class A:
    def __init__(self):
        print("world")class B(A):
    def __init__(self):
       print("hello")B()  # output: hello

在我使用过的所有其他语言中,超级构造函数都是隐式调用的。如何在Python中调用它?我希望super(self)但这不管用。


慕哥9229398
浏览 417回答 3
3回答

哆啦的时光机

一种方法是调用A的构造函数并传递self作为一个论点,就像这样:class B(A):     def __init__(self):         A.__init__(self)         print "hello"这种风格的优点是它非常清楚。它叫A的首字母。缺点是它不能很好地处理菱形继承,因为您可能最终会两次调用共享基类的初始化器。另一种方法是使用Super(),正如其他人所展示的那样。对于单继承,它所做的与让您调用父级的初始化项基本上是一样的。但是,Super()在底层要复杂得多,有时在多个继承情况下可能会违反直觉。好的一面是,Super()可以用来处理钻石形状的继承。如果你想知道超级()做什么的细节,我找到了关于超级()是如何工作的最好的解释。
随时随地看视频慕课网APP

相关分类

Python
我要回答