• python面向对象高级:Mixin多重继承


    继上一篇学习笔记:python面向对象的继承与多态,本篇就Mixin扩展类的方法写下学习笔记

    Mixin

    Mixin编程是一种开发模式,是一种将多个类中的功能单元的进行组合的利用的方式,这听起来就像是有类的继承机制就可以实现,然而这与传统的类继承有所不同。

    通常mixin并不作为任何类的基类,也不关心与什么类一起使用,而是在运行时动态的同其他零散的类一起组合使用

    使用Mixin的好处:

    • 可以在不修改任何源代码的情况下,对已有类进行扩展
    • 可以保证组件的划分
    • 可以根据需要,使用已有的功能进行组合,来实现“新”类
    • 很好的避免了类继承的局限性,因为新的业务需要可能就需要创建新的子类
    '''
    python 对于 mixin 命名方式一般以 MixIn, able, ible 为后缀。
    由于 mixin 是组合,因而是做加法,为已有的类添加新功能,而不像继承一样,下一级会覆盖上一级相同的属性或方法。 但在某些方面仍然表现得与继承一样, 例如类的实例也是每个 mixin 的实例。 mixin 使用不当会导致类的命名空间污 染,所以要尽量避免 mixin 中定义相同方法。 对于相同的方法,有时很难区分 实例到底使用的是哪个方法。
    ''' class Mixin1(object): def test(self): print("mixin 1") def which_test(self): self.test() class Mixin2(object): def test(self): print("mixin 2") class MyClass1(Mixin1, Mixin2): pass # 按从左到右顺序从 mixin 中获取功能并添加到 MyClass class Myclass2(Mixin1, Mixin2): def test(self): # 已有 test 方法,因而不会再添加 Mixin1, Mixin2 的 test 方法 print("my class 2") c1 = MyClass1() c1.test() # "mixin 1" c2 = MyClass2() c2.test() # "my class 2" c2.which_test() # "my class 2" isinstance(c1, Mixin1) # True issubclass(MyClass1, Mixin2) # True

    学习资源来自:Python Mixin机制python用法:Mixin

  • 相关阅读:
    LInux-crontab
    Linux权限-chmod1
    Tool_BurpSuite安装和简单使用
    python与redis交互(四)
    Flask_环境部署(十六)
    Nginx_配置文件nginx.conf配置详解
    Tool_linux环境安装python3和pip
    Nginx_全局命令设置
    Linux_无法解析域名
    VMware_克隆机器后主机Ping不同虚拟机,虚拟机能Ping通主机
  • 原文地址:https://www.cnblogs.com/kumata/p/9163677.html
Copyright © 2020-2023  润新知