Python的Mixin

转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826299.html

一:Mixin模式

    Mixin编程是一种开发模式,是一种 将多个不同类中的功能单元的进行组合利用的方式。

    Mixin模式是通过python的多继承机制实现的,但是又与单纯的类继承有所区别:

    1)用作Mixin的类,不作为任何类的基类;

    2)用做Mixin的类不关心将会和什么类一起被继承使用,它只会在子类定义时按需继承进来;

    3)用作Mixin的类通常都会实现一种通用的功能,相当于一种工具箱,即插即用;

二:Mixin模式的优势

    1) 可以在不修改任何已有类的源代码的情况下,对已有类进行功能扩展;

    2)可以保证组件化编程,将可复用的功能封装为一个Mixin类,按需继承使用;

    3)子类可以根据需要,使用已有的Mixin功能类们进行组合,来实现“新的自己”;

    4)突破了类继承的局限性,以往扩展新功能需要开发新的子类,现在只需要在自身的多继承中添加一个Mixin类即可。

三:Mixin的原理

    首先我们来看一下Python类的一个隐藏属性:__mro__    

This attribute is a tuple of classes that are considered when looking for base classes during method resolution.

    它的值是一个元组,元组的元素是该类所继承的类。当子类中调用self.method()或super()时,方法调用会从子类自身查起,沿着继承链条(__mro__属性数组从左到右的顺序)逐个类 地检索符合的方法并调用。

    因此,我们通过Mixin模式为某类添加了新的内容后,在子类中可以直接通过self.method()或super().method()即可无误地调用到我们插入进来的功能啦。

原文地址:https://www.cnblogs.com/ygj0930/p/10826299.html