python 类的继承 super.__
时间: 2025-01-04 14:31:12 浏览: 13
### Python 类继承 `super()` 的使用方法
`super()` 函数返回一个代理对象,该对象可以用来调用父类的方法。这有助于避免显式命名基类并支持多继承场景下的正确方法解析。
#### 调用父类初始化方法
当创建子类实例时,通常需要先执行父类的初始化逻辑:
```python
class Parent:
def __init__(self, name):
self.name = name
def greet(self):
print(f"Hello {self.name}")
class Child(Parent):
def __init__(self, name, age):
super().__init__(name) # 调用父类的构造函数[^2]
self.age = age
child_instance = Child('Alice', 10)
child_instance.greet()
```
#### 多重继承中的应用
在涉及多个父类的情况下,`super()` 遵循特定的方法解析顺序 (MRO),从而决定实际调用了哪个父类的方法:
```python
class A:
def method(self):
print("A's method")
class B(A):
pass
class C(A):
def method(self):
print("C's method")
class D(B, C):
def method(self):
super().method() # 根据 MRO 来确定具体调用哪一个父类的方法[^3]
d_instance = D()
d_instance.method()
```
在这个例子中,由于D同时继承自B和C两个类,而这两个类又都继承于同一个根类A;因此,在D类里通过`super()`调用`method()`的时候,实际上会按照定义时声明的继承关系(即从左到右),优先尝试去寻找最近的一个实现了此方法的祖先类来进行调用。
阅读全文