logo
43

继承

⏱️ 35分钟

继承(Inheritance):在已有类基础上扩展能力

你现在可能会困惑什么

“复制父类代码不也行吗?”

能跑,但重复代码会带来维护灾难。 继承的目的就是复用公共能力并扩展差异部分。

一句话定义

继承允许子类复用父类属性/方法,并重写或新增行为。

生活类比

父类像通用岗位 JD,子类像具体岗位在其上加职责。

最小可运行例子

class Animal:
    def speak(self):
        return "..."

class Dog(Animal):
    def speak(self):
        return "Woof"

print(Dog().speak())

课堂小测(5 分钟)

  1. Vehicle 父类和 Car/Bike 子类。
  2. 重写 run() 方法。
  3. 比较多态调用结果。

课堂小测参考答案与判分点

  • 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
  • 判分点 1(正确性):主流程结果正确,关键分支可执行。
  • 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
  • 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。

迁移任务(课后)

把一个“通用通知 + 邮件通知/短信通知”场景建成继承结构。

本节验收标准

你能独立做到:

  • 写基础继承结构
  • 正确重写方法
  • 避免不必要重复代码

常见报错与调试步骤(新手版)

  • 报错看不懂:先读最后一行错误类型(如 TypeErrorNameError),再回到对应代码行定位。
  • 不确定变量值:在关键位置临时 print(变量, type(变量)),先确认数据是否符合预期。
  • 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。

常见误区

  • 误区:继承层级越深越专业。
  • 正解:层级过深会提高复杂度,优先简单结构。