1 2 3 4

mixins机制

1、多继承的正确打开方式:mixins机制
mixins机制核心:就是在多继承背景下尽可能地提升多继承的可读性
ps:让多继承满足人的思维习惯=》什么"是"什么

补充:通常Mixin结果的类放在左边

首先它必须表示某一种功能,而不是某个物品,python 对于mixin类的命名方式一般以 Mixin, able, ible 为后缀

其次它必须责任单一,如果有多个功能,那就写多个Mixin类,一个类可以继承多个Mixin,为了保证遵循继承的“is-a”原则,只能继承一个标识其归属含义的父类

然后,它不依赖于子类的实现

最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能。(比如飞机照样可以载客,就是不能飞了)


案例:
Python语言可没有接口功能,但Python提供了Mixins机制,简单来说Mixins机制指的是子类混合(mixin)不同类的功能,而这些类采用统一的命名规范(例如Mixin后缀),
以此标识这些类只是用来混合功能的,并不是用来标识子类的从属"is-a"关系的,所以Mixins机制本质仍是多继承,但同样遵守”is-a”关系,如下
class Vehicle:
pass

class FlyableMixin:
def fly(self):
pass

class CivilAircraft(FlyableMixin,Vehicle): # 民航飞机
pass

class Helicopter(FlyableMixin,Vehicle): # 直升飞机
pass

class Car(Vehicle): # 汽车并不会飞,但按照上述继承关系,汽车也能飞了
pass


posted @ 2020-04-10 20:47  臭弟弟d  阅读(289)  评论(0编辑  收藏  举报