在Python中,当子类继承父类时,子类的 `__init__` 方法默认会覆盖父类的 `__init__` 方法。如果子类想要调用父类的 `__init__` 方法来初始化父类的属性,可以使用 `super().__init__()` 语句。下面是一个简单的例子:
```python
class Base:
def __init__(self):
print("Base.__init__")
class A(Base):
def __init__(self):
super().__init__() 调用父类的__init__方法
print("A.__init__")
class B(A):
def __init__(self):
super().__init__() 调用父类A的__init__方法
print("B.__init__")
class C(A, B):
def __init__(self):
super().__init__() 调用父类A和B的__init__方法
print("C.__init__")
c = C()
输出将会是:
```
Base.__init__
A.__init__
B.__init__
C.__init__
在这个例子中,`C` 类通过 `super().__init__()` 调用了 `A` 类和 `B` 类的 `__init__` 方法,确保了父类的属性被正确初始化。如果你不调用 `super().__init__()`,父类的 `__init__` 方法将不会被调用,父类的属性也就不会被初始化。
需要注意的是,`super()` 函数调用的是方法解析顺序(MRO)中父类的方法,Python 3中默认的MRO保证了父类的 `__init__` 方法会被调用。