(十八)独立练习与文件处理的衔接
1. 用同一组数据检查不同实现
以下任务均为自拟。先列出对象创建、属性写入和方法调用顺序,再实现。
- 各本书独立的阅读进度。 建立两本书,页数分别为
200、120。第一本读到50,第二本仍为0;比例分别为0.25、0.0。给第一本设置250时,显示错误,原来的50保持不变。 - 共同配置与局部覆盖。 两个实例最初读取类上的
goal=30;把第一个实例设为45,再把类设为60,应读到45、60。删除第一个实例的同名属性后,再读为60。 - 扩展电子书说明。 创建一本大小为
12 MB的电子书,父类显示方法调用子类说明,再显示“书籍:Python,12 MB”。手算进入方法的顺序,标出每一处self实际指向的对象。 - 增加存储器。 实现用元组行列表保存记录的
TupleStore,不改 BookShelf 的记录操作。用综合示例同样的命令运行,输出保持一致;检查载入、保存时的标签是否仍然独立。 - 读取快照与修改接口。 读取书架快照后,修改副本的完成状态与标签,书架保持原样;再通过书架方法修改并保存、重新载入,状态按操作变化。分别对两种存储器完成同一组检查。
- 上下文中的错误退出。 在主体主动发出一条运行错误,观察退出处理先执行,外层再收到错误;离开主体后,资源标志为关闭。按这条时间线写出输出,再运行核对。
2. 本章回查
| 需要解释的动作 | 查阅主题 |
|---|---|
| 类调用建立一条记录 | 类、实例、初始化与 __init__ |
| 点号前的对象交入方法 | self、绑定方法与回调 |
| 两个实例为何读到同一份列表 | 类属性、实例属性与原地修改 |
| 普通属性写法触发计算或检查 | property 与 setter |
| 从文本等形式创建实例 | 类方法、cls 与 Self |
| 自动生成记录方法 | 数据类、默认工厂、字段比较与 ClassVar |
| 把工作交给另一个对象 | 组合、存储协议与具体实现 |
| 沿用、重写与继续调用 | 继承、多态、super 与 MRO |
| 让对象接入已有语言操作 | 显示、容器、调用与上下文管理协议 |
| 解释对象何时仍被引用 | 别名、绑定方法、循环引用与资源关闭 |
书架已经能把状态交给不同的存储器,但当前快照仍然在程序的内存中。下一章让快照成为文件里的文本,再处理读写模式、编码、异常与关闭;随后把多本书放进数据库,继续沿这里的接口连接保存与查询。
本章习题解答与推导 按题号整理实现、过程说明与运行检查,可在完成练习后逐项对照。