Day30.Mixins机制
1.Mixins机制_针对多继承,不使用Mixins机制情况
1.1.主类:就是大部分都是主要功能
1.2.辅类:就是一些辅助功能
1.3.辅类的类名也有讲究:一般以mixin、able、ible等结尾
1.4.继承的位置也有讲究,一般辅类在左边
2.Mixins机制_针对多继承,使用Mixins机制的情况,使用Mixin类实现多继承的注意点
# 多继承的正确打开方式:mixins机制 # mixins机制核心:就是多继承背景下尽可能提升多继承的可读性 # ps: 让多继承满足人的思维习惯===> 什么"是"什么 '''针对多继承,不使用Mixins机制情况''' class Vehicle: pass # 定义一个飞行的类 class Flyable: def fly(self): pass # 民航飞机,进行多继承(既属于交通工具,又属于飞行器) class CivilAircraft(Flyable, Vehicle): pass # 直升飞机,进行多继承(既属于交通工具,又属于飞行器) class Helicopter(Flyable, Vehicle): pass # 汽车不能飞行,但按照上述继承关系,汽车也能飞 class Car(Vehicle): pass ''' 针对多继承,使用Mixins机制的情况 使用Mixin类实现多继承要非常小心: 1.首先必须表示一种功能,而不是某个物品,python对于mixin类的命名方式一般以Mixin,able,ible为后缀 2.其次必须责任大一,如果多个功能,那就写多个Mixin类,一个类可以继承多个Mixin,为了保证遵循继承的'is-a'原则,只能继承一个标识其归属含义的父类 3.不依赖于子类的实现 4.子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能 ''' class Vehicle: pass # 定义一个飞行的类 class FlyableMixin: def fly(self): pass # 民航飞机,进行多继承(既属于交通工具,又属于飞行器) class CivilAircraft(FlyableMixin, Vehicle): pass # 直升飞机,进行多继承(既属于交通工具,又属于飞行器) class Helicopter(FlyableMixin, Vehicle): pass # 汽车不能飞行,但按照上述继承关系,汽车也能飞 class Car(Vehicle): pass