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()
- 输出
跑…
-------增加功能
开火
走…
-------增加功能