近期在读“流畅的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.为用户提供聚合类