介绍
个人的粗浅理解。Mixin模式,主要是将不同的功能写成不同的类,这些类被继承之后,子类就会获得这些功能。
但是值得注意的是,虽然子类继承了这些Mixin类,但是它们并不是一种属于的关系,而是一种平级的关系。
一个Mixin类一般只实现一个单一功能。
示例
class Plane(object):
def __init__(self):
pass
def say(self):
print("I'm chinese plane.")
class AttackMixin(object):
def attack(self):
self.say()
print("da da da!")
class BeenAttackMixin(object):
def beenattack(self):
print("Boom, guangguang.")
class BattlePlane(Plane, AttackMixin, BeenAttackMixin):
pass
j20 = BattlePlane()
j20.attack()
j20.beenattack()
定义了两个Mixin类,分别实现了攻击和被揍两个功能。
结果:
I'm chinese plane.
da da da!
Boom, guangguang.
其实我一开始,疑惑这个AttackMixin类里面self.say()能不能调用成功。现在看来成功了。这要求Plane类和AttackMixin两个类必须同时被继承。这样实例传进来,才有say()方法使用。
注意
- 单个Mixin类一般只实现一个功能
- 在Minin中一般不要使用super