Python 现代开发学习笔记

04-03 扩展电子书说明

本章题解 · 全部练习

题目

创建一本大小为 12 MB 的电子书,父类显示方法调用子类说明,再显示“书籍:Python,12 MB”。手算进入方法的顺序,标出每一处 self 实际指向的对象。

推导与做法

display 从父类继承,但其中的 self 仍指向 EBook 实例。执行 self.description() 时,会进入子类覆盖的方法。

调用顺序为 EBook 实例 → Book.display → EBook.description → 返回 Python,12 MB → 拼接“书籍:”。super().__init__ 只负责初始化继承来的 title,不会把实例变成另一种对象。

实现与运行

查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。

在配套目录的 面向对象/bookshelf_project 中运行。

# 使用项目解释器运行本题,题号决定执行哪一组演示。
python "../../学习索引/参考实现/代码/ch04.py" 04-03

程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。

查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
  "trace": [
    "Book.display:self 是这本 EBook",
    "EBook.description:self 仍是同一个对象"
  ],
  "display": "书籍:Python,12 MB"
}

笔记正文与全部题解 · Ctrl / ⌘ K