python Mixin 学习
解释定义
-
Mixin 是一种设计模式和设计思想,而不是某个特定类和函数,mixin包含了其他类要使用的方法,其他类可以很方便添加这些方法,相当于把一些类的通用功能提取出来,提供一个灵活的多继承,避免了继承中的钻石问题(菱形继承)。
mixin相当于一个不可实例的类,在里面定制一些方法,不用关联初始化,其他类就可以很简单获取使用这些方法,其他类如何获取mixin类中的方法,不同语言有不同的方法,因此有时这个关系被描述为include,而不是inheritance -
优点:
1.在不修改类的代码基础上,对类进行功能增删
2.增加代码复用,减少类的产生
3.可以根据开发需要,动态调整功能
例子
- 代码
# 原始代码
class Role:def run(self):print('跑......')class SkillMixin:def fire(self):print('开火')class WalkMixin:def walk(self):print('走.....')# 不修改基础上增加功能
class Solder(Role,SkillMixin,WalkMixin):def use_list(self):return [self.fire,self.walk]def use(self):print('-------增加功能')for action in self.use_list():action()print('-------增加功能')def work(self):self.run()self.use()solder = Solder()
solder.work()
- 输出
跑…
-------增加功能
开火
走…
-------增加功能