四时宝库

程序员的知识宝库

继承:Python面向对象的"家族遗传"!从动物分类到多继承黑科技

"为什么学生和老师能共享人类特征?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的混血天赋。掌握这些魔法,让你的代码具备'遗传优势',高效复用,生生不息!"

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接