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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值