15.1 继承
继承允许一个类获取另一个类的属性和方法。
基本语法
1 | class 父类: |
示例
1 | class Animal: |
15.2 方法重写
子类可以重写父类的方法。
1 | class Animal: |
15.3 super() 函数
super() 用于调用父类方法。
1 | class Person: |
15.4 多态
多态允许不同类的对象对同一消息做出不同响应。
1 | class Shape: |
15.5 多重继承
Python 支持一个类继承多个父类。
1 | class Flyer: |
MRO(方法解析顺序)
1 | class A: |
15.6 类方法作为替代构造器
1 | class Date: |
15.7 组合 vs 继承
组合(Has-A 关系)
1 | class Engine: |
选择建议
- 继承:Is-A 关系(狗是动物)
- 组合:Has-A 关系(汽车有引擎)
- 优先使用组合,更灵活
15.8 类型检查
1 | class Animal: |
15.9 本章小结
- 继承实现代码复用,子类可重写父类方法
super()调用父类方法- 多态允许不同类响应同一方法
- 支持多重继承,注意 MRO 顺序
- 类方法可作为替代构造器
- 优先使用组合而非继承
isinstance()和issubclass()用于类型检查
练习题
- 创建
Vehicle基类,派生Car和Bike类 - 创建
Employee类,派生Manager和Developer类 - 使用多态实现不同形状的面积计算
- 以下代码输出什么?
1
2
3
4
5
6
7class A:
def show(self):
print("A")
class B(A):
pass
b = B()
print(isinstance(b, A))