個人的粗淺理解。mixin模式,主要是將不同的功能寫成不同的類,這些類被繼承之後,子類就會獲得這些功能。
但是值得注意的是,雖然子類繼承了這些mixin類,但是它們並不是一種屬於的關係,而是一種平級的關係。
乙個mixin類一般只實現乙個單一功能。
class
plane
(object):
def__init__
(self)
:pass
defsay
(self)
:print
("i'm chinese plane."
)class
attackmixin
(object):
defattack
(self)
: self.say(
)print
("da da da!"
)class
beenattackmixin
(object):
defbeenattack
(self)
:print
("boom, guangguang."
)class
battleplane
(plane, attackmixin, beenattackmixin)
:pass
j20 = battleplane(
)j20.attack(
)j20.beenattack(
)
定義了兩個mixin類,分別實現了攻擊和被揍兩個功能。
結果:
i'm chinese plane.
da da da!
boom, guangguang.
其實我一開始,疑惑這個attackmixin類裡面self.say()能不能呼叫成功。現在看來成功了。這要求plane類和attackmixin兩個類必須同時被繼承。這樣例項傳進來,才有say()方法使用。
單個mixin類一般只實現乙個功能
在minin中一般不要使用super
Python Mixin程式設計機制
mixin程式設計是一種開發模式,是一種將多個類中的功能單元進行組合的利用方式,這聽起來就像是有類的繼承機制就可以實現,然而這與傳統的類繼承有所不同。通常minxin並不作為任何類的基類,也不關心與什麼類一起使用,而是在執行時動態的同其他零散的類一起組合使用。使用mixin機制有如下好處 可以在不修...
Python Mixin程式設計機制
mixin程式設計是一種開發模式,是一種將多個類中的功能單元的進行組合的利用的方式,這聽起來就像是有類的繼 承機制就可以實現,然而這與傳統的類繼承有所不同。通常mixin並不作為任何類的基類,也不關心與什麼類一 起使用,而是在執行時動態的同其他零散的類一起組合使用。使用mixin機制有如下好處 可以...
Python Mixin混入的使用方法
demo encoding utf 8 author kevinlu1010 qq.com class base def f1 self print i am f1 in base def f2 self print i am f2 in base class c0 def f2 self prin...