super Python · 内置函数
`super` 在子类中调用父类的方法或构造函数。就像孩子需要父母帮忙时,通过小天才儿童电话手表找到父母来解决问题。使用 `super` 可以避免显式写出父类名字,方便维护。
怎么用
super().方法名(参数)
小例子
class 动物:
def __init__(self, 名字):
self.名字 = 名字
def 叫(self):
print(f"{self.名字}发出声音")
class 狗(动物):
def __init__(self, 名字, 品种):
super().__init__(名字) # 调用父类构造函数
self.品种 = 品种
def 叫(self):
super().叫() # 调用父类方法
print("汪汪汪")
我的狗 = 狗("旺财", "金毛")
我的狗.叫()
运行结果
旺财发出声音 汪汪汪
对比:直接写父类名字
class 狗(动物):
def __init__(self, 名字, 品种):
动物.__init__(self, 名字) # 也能工作,但不够优雅
self.品种 = 品种
用 `super` 可以自动找到父类,避免重复写类名,特别是多重继承时更有用。常见使用场景
1. 子类初始化时调用父类初始化:
class 正方形(矩形):
def __init__(self, 边长):
super().__init__(边长, 边长) # 矩形初始化
2. 重写方法时还想保留父类功能:
def 叫(self):
super().叫()
print("额外行为")
3. 多重继承中正确处理 MRO(方法解析顺序)。
提醒:- `super()` 只能在类内部使用。 - 在 Python 3 中,`super()` 通常不需要参数。 - 如果父类方法返回一个值,`super()` 调用会返回该值。
官方文档:https://docs.python.org/zh-cn/3/library/functions.html#super
在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条