Python Mixin解釋

tomcatdog發表於2020-11-21

解釋定義

  1. Mixin 是一種設計模式和設計思想,而不是某個特定類和函式,mixin包含了其他類要使用的方法,其他類可以很方便新增這些方法,相當於把一些類的通用功能提取出來,提供一個靈活的多繼承,避免了繼承中的==鑽石問題==(菱形繼承)。

mixin相當於一個不可例項的類,在裡面定製一些方法,不用關聯初始化,其他類就可以很簡單獲取使用這些方法,其他類如何獲取mixin類中的方法,不同語言有不同的方法,因此有時這個關係被描述為include,而不是inheritance

  1. 優點:

    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()

if __name__ == '__main__':
    solder = Solder()
    solder.work()

輸出

......
-------增加功能
開火
走.....
-------增加功能
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章