Python 现代开发学习笔记

(十八)独立练习与文件处理的衔接

1. 用同一组数据检查不同实现

以下任务均为自拟。先列出对象创建、属性写入和方法调用顺序,再实现。

  1. 各本书独立的阅读进度。 建立两本书,页数分别为 200、120。第一本读到 50,第二本仍为 0;比例分别为 0.25、0.0。给第一本设置 250 时,显示错误,原来的 50 保持不变。
  2. 共同配置与局部覆盖。 两个实例最初读取类上的 goal=30;把第一个实例设为 45,再把类设为 60,应读到 45、60。删除第一个实例的同名属性后,再读为 60。
  3. 扩展电子书说明。 创建一本大小为 12 MB 的电子书,父类显示方法调用子类说明,再显示“书籍:Python,12 MB”。手算进入方法的顺序,标出每一处 self 实际指向的对象。
  4. 增加存储器。 实现用元组行列表保存记录的 TupleStore,不改 BookShelf 的记录操作。用综合示例同样的命令运行,输出保持一致;检查载入、保存时的标签是否仍然独立。
  5. 读取快照与修改接口。 读取书架快照后,修改副本的完成状态与标签,书架保持原样;再通过书架方法修改并保存、重新载入,状态按操作变化。分别对两种存储器完成同一组检查。
  6. 上下文中的错误退出。 在主体主动发出一条运行错误,观察退出处理先执行,外层再收到错误;离开主体后,资源标志为关闭。按这条时间线写出输出,再运行核对。

2. 本章回查

需要解释的动作 查阅主题
类调用建立一条记录 类、实例、初始化与 __init__
点号前的对象交入方法 self、绑定方法与回调
两个实例为何读到同一份列表 类属性、实例属性与原地修改
普通属性写法触发计算或检查 property 与 setter
从文本等形式创建实例 类方法、cls 与 Self
自动生成记录方法 数据类、默认工厂、字段比较与 ClassVar
把工作交给另一个对象 组合、存储协议与具体实现
沿用、重写与继续调用 继承、多态、super 与 MRO
让对象接入已有语言操作 显示、容器、调用与上下文管理协议
解释对象何时仍被引用 别名、绑定方法、循环引用与资源关闭

书架已经能把状态交给不同的存储器,但当前快照仍然在程序的内存中。下一章让快照成为文件里的文本,再处理读写模式、编码、异常与关闭;随后把多本书放进数据库,继续沿这里的接口连接保存与查询。

本章习题解答与推导 按题号整理实现、过程说明与运行检查,可在完成练习后逐项对照。

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