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"
}