"为什么学生和老师能共享人类特征?Python如何实现'一父多子'的继承关系?super()方法有何神奇魔力?3分钟掌握代码复用的终极艺术!"
一、继承:代码的"家族树"
核心概念:
- 父类(基类):提供通用属性和方法
- 子类(派生类):继承父类特性,添加特有功能
- 继承关系:像生物进化树,层层特化
# 生物继承体系示例
class Animal: pass # 祖先类
class Mammal(Animal): pass # 哺乳动物继承动物
class Reptile(Animal): pass # 爬行动物继承动物
class Tiger(Mammal): pass # 老虎继承哺乳动物
class Snake(Reptile): pass # 蛇继承爬行动物
Python特性:所有类默认继承object,它是所有类的"始祖"
二、单继承实战:人类家族
class Person: # 父类
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
print(f"姓名:{self.name}, 年龄:{self.age}")
class Student(Person): # 子类继承Person
def __init__(self, name, age, stu_id):
super().__init__(name, age) # 调用父类构造方法
self.stu_id = stu_id # 子类特有属性
class Teacher(Person): # 子类继承Person
def __init__(self, name, age, teach_years):
super().__init__(name, age)
self.teach_years = teach_years
使用示例:
# 创建子类对象
stu = Student("张三", 18, "S1001")
tea = Teacher("李老师", 35, 10)
stu.info() # 调用继承的方法 → 姓名:张三, 年龄:18
tea.info() # 姓名:李老师, 年龄:35
super()魔法:
通过super()调用父类方法,避免硬编码父类名
三、多继承:Python的独门绝技
Python支持一个类继承多个父类:
class A:
def method_a(self):
print("A类方法")
class B:
def method_b(self):
print("B类方法")
class C(A, B): # 多继承
def method_c(self):
print("C类方法")
obj = C()
obj.method_a() # 调用A类方法
obj.method_b() # 调用B类方法
钻石继承问题:
当多继承形成菱形结构时,Python使用MRO(方法解析顺序)确定调用顺序
四、继承关系可视化
MRO查看方法:
print(ClassName.__mro__) 查看方法解析顺序
"记住:继承是代码的基因传递,super()是家族联络员,多继承是Python的混血天赋。掌握这些魔法,让你的代码具备'遗传优势',高效复用,生生不息!"