多继承的正确打开方式:mixins机制
mixins机制的核心:就是在多继承背景下尽可能多的提升继承的可读性
ps:让多继承满足人的思维习惯 =》 什么“是”什么
class Vehicle: # 交通工具
pass
class FlyableMixin:
def fly(self):
'''
飞行功能相应的代码
'''
print("I am flying")
class CivilAircraft(FlyableMixin, Vehicle): # 民航飞机
pass
class Helicopter(FlyableMixin, Vehicle): # 直升飞机
pass
class Car(Vehicle): # 汽车
pass
# ps: 采用某种规范(如命名规范)来解决具体的问题是python惯用的套路
看到这些读到的功能:FlyableMixin更多的是存放功能,而Vehicle才是大爹。
使用Mixin类实现多重继承要非常小心
1、首先它必须表示某一种功能,而不是某个物品,python 对于mixin类的命名方式一般以 Mixin, able, ible 为后缀
2、其次它必须责任单一,如果有多个功能,那就写多个Mixin类,一个类可以继承多个Mixin,为了保证遵循继承的“is-a”原则,只能继承一个标识其归属含义的父类
3、然后,它不依赖于子类的实现(就算没有子类它也能实现,子类没有它只是少了某些功能不耽误运行)
4、最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能。(比如飞机照样可以载客,就是不能飞了)