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

 

posted on 2024-06-26 15:48  与太阳肩并肩  阅读(3)  评论(0编辑  收藏  举报

导航