zoukankan      html  css  js  c++  java
  • 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()即可无误地调用到我们插入进来的功能啦。

  • 相关阅读:
    hdu 4614 线段树 二分
    cf 1066d 思维 二分
    lca 最大生成树 逆向思维 2018 徐州赛区网络预赛j
    rmq学习
    hdu 5692 dfs序 线段树
    dfs序介绍
    poj 3321 dfs序 树状数组 前向星
    cf 1060d 思维贪心
    【PAT甲级】1126 Eulerian Path (25分)
    【PAT甲级】1125 Chain the Ropes (25分)
  • 原文地址:https://www.cnblogs.com/ygj0930/p/10826299.html
Copyright © 2011-2022 走看看