混合中的重寫方法
Mixins 是一種類,用於將額外的屬性和方法混合到類中。這通常很好,因為很多次 mixin 類不會覆蓋彼此或者基類的方法。但是如果你在 mixin 中覆蓋方法或屬性,這可能會導致意外的結果,因為在 Python 中,類層次結構是從右到左定義的。
例如,參加以下類
class Mixin1(object):
def test(self):
print "Mixin1"
class Mixin2(object):
def test(self):
print "Mixin2"
class BaseClass(object):
def test(self):
print "Base"
class MyClass(BaseClass, Mixin1, Mixin2):
pass
在這種情況下,Mixin2 類是基類,由 Mixin1 擴充套件,最後由 BaseClass 擴充套件。因此,如果我們執行以下程式碼片段:
>>> x = MyClass()
>>> x.test()
Base
我們看到返回的結果來自 Base 類。這可能會導致程式碼邏輯中的意外錯誤,需要考慮並記住