python学习笔记-tip41(多重继承)

一句话,python可以多重集成,纠其原因,大致是没有“接口”这么一讲吧

如果还是不理解,可以想象一下动物的分类

动物 划分的话 一般按照 哺乳 鸟类 这两个类型进行划分
但是动物又有 可以飞行的 陆地跑的 水中游的等等分类
如果按照java来说,我们可以通过接口去扩展这些行为,但是python没有接口,只能通过多重继承实现,说是多重继承,其实大致意思和接口意思是一样的

我们还是按照这个动物的分类来写一个例子吧


扩展一下:Mixin(中文意思:混合)

何为Mixin

就像上方例子张的Bat ,他的主线是Bird类,但是想给他更多的功能,就让他再次继承了Flyable类,这种设计通常称为Mixin

Mixin设计的目的

就是给一个类增加多个功能,在设计类的时候,我们优先考虑通过多层继承来组合多个Mixin的功能,而不是设计多层次复杂的继承关系

Python自带的很多库也使用了Mixin的设计

比如网络服务类:TCPServer和UDPServer
而网络服务类必然会提供给多个用户,那么多用户使用,需要用到多进程和多线程的的类
如:ForkingMixin(Fork有分支、岔的意思,这里表示进程)、ThreaddingMixin。

通过将上面的两类 模型进行组合,就能得到合适的服务。

如下:

多进程模式的TCP服务

    class MyTCPServer(TCPServer,ForkingMixin):
              pass

多线程模式的UDP服务
class MyUDPServer(UDPServer,ThreaddingMixin):
pass
这样一来,我们就不需要构造复杂的庞大的继承链条,只需要组合不同类的功能
就能快速构造出我们所需的子类

总结

Mixin会用的很广泛
注意:单一继承的语言:java等,不能使用Mixin设计

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 回忆一下Animal类层次的设计,假...
    Cookie_hunter阅读 1,094评论 0 0
  • 零基础学习python数据分析——多重继承,科多大数据带你来学习。 继承是面向对象编程的一个重要的方式,因为通过继...
    大数据在说话阅读 3,490评论 0 2
  • “这个人也许永远不回来了,也许‘明天’回来!”当读到这句话的时候,《边城》这本书算是终结了。 一本书以一个...
    檀一同学阅读 5,356评论 0 0
  • 眺望最亮的星星 那是牵挂的眼睛 找寻美好的片段 那是温馨的背影 打捞铭心的记忆 那是酝酿的风景 回想甜蜜的时光 那...
    一剪红梅阅读 1,247评论 7 13
  • 《切尔诺贝利的回忆:核灾难口述史 作者:(白俄罗斯)阿列克谢耶维奇 1986年4月26日,切尔诺贝利核电站发生爆炸...
    小董是野马阅读 1,796评论 0 0

友情链接更多精彩内容