Python 中的多重继承问题
Python 多重继承有哪些常见问题?super() 在多重继承中如何正确使用?
回答
专业代码师
多重继承常见问题:
- 方法冲突:不同父类有同名方法
- 菱形继承:公共基类被多次初始化
- MRO 复杂性:方法查找顺序不易理解
正确使用 super():
class A:
def __init__(self):
print('A')
super().__init__()
class B(A):
def __init__(self):
print('B')
super().__init__()
class C(A):
def __init__(self):
print('C')
super().__init__()
class D(B, C):
def __init__(self):
print('D')
super().__init__()
D()
# 输出:D -> B -> C -> A(按 MRO 顺序,每个类只调用一次)
print(D.__mro__)
# D -> B -> C -> A -> object
关键:所有类(包括基类)都调用 super().__init__(),形成协作链。