


今天的基础篇内容讲解面向对象三大特性(2)-继承的基本知识,大家这么聪明,一看就会了,主要内容是介绍下封装的内容。

1. 继承:顾名思义,子类既可以继承父类中的属性和方法,实现代码重用,子类也可以新增自己特有的方法和重写父类的方法;但是子类不能继承父类的私有属性和私有方法。

1.1 单、多继承:顾名思义,单继承只继承了一个父类,多继承则有多个父类。当我们调用方法时,先在子类中查找,若不存在:单继承则再从父类中查找,多继承则再从左到右、从新到老依次查找父类中是否包含该方法(可以通过类名.__mro__解析调用顺序)。
# 单、多继承示例class Person:"""人的类"""home = "earth"def __init__(self, name):self.name = namedef study(self):print("studying...")#----- 1. 单继承,继承单个父类 -----class YellowRace(Person):"""黄种人"""color = "yellow"def run(self):print("runing...")class Student(Person):"""学生"""def __init__(self, name, grade):self.name = nameself.grade = gradedef listen(self):print("listening...")# ----- 2. 多继承,继承两个及以上父类 -----class ChineseStudent(Student, YellowRace): # 继承了Student和YellowRace"""中国学生"""country = "中国"y1 = ChineseStudent("张三", "三年级")print(y1.home, y1.color, y1.country, y1.name, y1.grade)y1.listen()y1.run()y1.study()
1.2 父类方法复用:顾名思义,就是子类沿用父类的老方法,子类可以在类中使用super().方法名()或父类名.方法名()来调用父类的方法,推荐第一种方法。
# 父类方法复用示例class Animal:"""动物父类"""def __init__(self, name, age):self.name = nameself.age = agedef eat(self):print(f"{self.name}({self.age}岁)正在吃食物~")# 子类继承自父类class Dog(Animal):"""子类:继承Animal,演示父类方法的复用"""def __init__(self, name, age, breed):# super() 指向父类,调用父类的初始化方法,避免重复写self.name/self.agesuper().__init__(name, age)
# 父类方法改写class Animal:"""动物父类"""def __init__(self, name, age):self.name = name # 名字self.age = age # 年龄# 父类通用方法def eat(self):print(f"{self.name}({self.age}岁)正在吃食物~")# 子类继承自父类class Dog(Animal):"""子类:继承Animal,演示父类方法的改写"""def __init__(self, name, age, breed):# 我们可以先调用父类基础方法,再改写、新增我们想要的效果super().__init__(name, age)self.breed = breed # 子类新增属性def eat(self):super().eat()# 复用之后再添加子类独有的拓展print(f"{self.name}({self.breed})还啃了骨头🦴~")# 子类还可以直接新增独有的方法def bark(self):print(f"{self.name}汪汪叫!")



总结:今日我们学习了Python基础篇-面向对象的三大特性(2)-继承:主要认识了单继承与多继承两种继承形式,理解了方法解析顺序(MRO)对多继承中方法调用顺序的规范作用;同时掌握了父类方法的复用技巧,可通过super().方法名()调用父类方法避免代码冗余,也学会了子类对父类方法的改写,即在保留父类核心逻辑的基础上扩展子类独有的功能,这些知识点清晰展现了继承在代码复用与扩展上的核心价值。在Python基础篇,后续我们将持续学习Python基础知识,祝每一位study er学习愉快。




