也就是说,哪怕我的派生类继承自多个父类,也可以使用super().__init__()的方式对吗?
时间: 2024-03-21 20:40:33 浏览: 70
是的,如果一个类继承自多个父类,则可以使用 `super()` 函数来调用这些父类的构造函数。`super()` 函数会根据方法解析顺序(MRO)来确定当前类的下一个要调用的父类,从而保证所有父类的构造函数都能被正确地调用。使用 `super()` 函数还有一个好处,就是当你修改了类的继承关系时,不需要修改构造函数的调用方式,代码可以自动适应新的继承关系。
下面是一个继承自多个父类的例子:
```
class A:
def __init__(self):
print("A.__init__")
class B:
def __init__(self):
print("B.__init__")
class C(A, B):
def __init__(self):
super().__init__()
c = C() # 输出 A.__init__
```
在这个例子中,类 `C` 继承自类 `A` 和类 `B`,并且在构造函数中使用了 `super().__init__()` 来调用父类的构造函数。当执行 `c = C()` 时,会先调用 `A` 的构造函数,再调用 `B` 的构造函数,最后调用 `C` 的构造函数。因此,输出的结果是 `A.__init__`。
阅读全文