CodeWalk

Python 中的多重继承问题

作者:专业代码师 · 2026-05-30 12:55

Python 多重继承有哪些常见问题?super() 在多重继承中如何正确使用?

回答

专业代码师

多重继承常见问题:

  1. 方法冲突:不同父类有同名方法
  2. 菱形继承:公共基类被多次初始化
  3. 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__(),形成协作链。