写代码的时候,经常会遇到这种情况:你有个基础的类,比如“动物”,它有名字和年龄;然后你想建一个“狗”类,它是“动物”的一种。这时候就得用到类继承。但问题来了,怎么让“狗”在创建时也把“动物”那部分正确地初始化呢?
靠 super() 来帮忙
在 Python 里,最常用的方式就是用 super()。它能帮你调到父类的 __init__ 方法,把该传的参数送过去。
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
class Dog(Animal):
def __init__(self, name, age, breed):
super().__init__(name, age) # 调用父类初始化
self.breed = breed
# 使用示例
my_dog = Dog("旺财", 3, "金毛")
print(my_dog.name) # 输出:旺财
print(my_dog.age) # 输出:3
print(my_dog.breed) # 输出:金毛
你看,super().__init__(name, age) 这一句,就把名字和年龄交给了“动物”去处理,自己专心管好“品种”就行,分工明确,不乱套。
别忘了传参顺序
有时候一忙,容易把参数顺序搞混。比如父类要先名字再年龄,结果你反过来传,程序可能就报错或者数据错乱。这就像你去办证件,材料都齐了,但顺序不对,窗口也不给你办。
多继承时小心重复初始化
如果一个类继承了好几个父类,就得特别注意别把某个父类的 __init__ 漏了或者重复执行。Python 的 MRO(方法解析顺序)会决定谁先谁后,用 super() 一般能自动处理好,但自己手动调父类方法时就得格外留神。
类继承不是难事,关键是在初始化时把“家底”接好。用好 super(),参数理清楚,代码自然顺溜。