super() 的用法和原理
Python 中 super() 函数的工作原理是什么?为什么在多重继承中推荐使用 super()?
回答
专业代码师
super() 返回一个代理对象,根据 MRO 调用下一个类的方法。
class A:
def say(self):
print('A')
class B(A):
def say(self):
super().say() # 调用 A.say
print('B')
在多重继承中使用 super() 可以:
- 确保所有父类的方法都被调用(协同多继承)
- 避免硬编码父类名称
- 支持菱形继承的正确协作
class Base:
def __init__(self):
print('Base')
class Mixin1(Base):
def __init__(self):
super().__init__()
print('Mixin1')