近期在读“流畅的 Python”这本书,想把自己的读书笔记分享给大家,希望能帮到也对这本书感兴趣但是没时间看的各位。(文章中大部分的话和图片摘录总结自“流畅的 Python”一书, 以及 python 官方网站)
章节概述:分析 Python 的继承
章节结构:
- 子类化内置类型
- 多重继承
具体内容:
- 子类化内置类型
Python 内置类型的子类覆盖的方法不会是隐式调用,所以内置类型不会调用子类覆盖的方法 — 忽略用户自定义覆盖方法
这种问题只限于内置类型内部的方法上
- 多重继承
多重继承需要处理命名冲突问题 — 重名时,Python 按照某种顺序遍历继承图,从而调用方法 — 方法解析顺序 Method Resolution Order MRO
如果一个类 D 的顺序时 D -> B -> C -> A
self.some_func(): 调用 D 的 some_func
super.some_func(): 按顺序找下一级的 some_func
self.some_func_D_dont_have: 按顺序找到下一级有这个方法的类调用
super.some_func_D_dont_have: 按顺序找到下一级有这个方法的类调用
多重继承应用:collections.abc 包
多重继承实现要点:
1. 把接口继承和实现继承区分开
2. 使用抽象基类显示表示接口
3. 通过混入重用代码
4. 在名称中民古额知名混入
5. 不要子类化多个具体类
6. 为用户提供聚合类