这章探讨继承和子类化问题。

首先,不要子类化内置的类型。因为内置类型有自己的操作规则,子类化内置类型,修改已有方法,很容易破坏正常的操作逻辑。这是个坑。

Python少见的支持了多重继承。其它常见语言只有C++支持多重继承,别的语言都选择了规避,而通过不同的方法达到近似的效果,比如Java的接口,PHP的traits。这不是没有原因的,多重继承带来方便的同时,也带来了一些麻烦。典型的就是“菱形”问题。当多个父类有一样的接口方法,对它的调用选择谁呢?

Tkinter是Python的一个UI库,简单易用。它大量的采用了多重继承技术,可惜跟最佳实践有些距离。后面,本文讨论了Django框架的多重继承应用,这就是正面案例了。

 

 

 

 

 

流畅的Python-Fluent Python读书笔记-13-正确重载操作符
流畅的Python-Fluent Python读书笔记-11-接口:从协议到抽象基类