讓我們假設A,B和C是類。 C繼承自A和B,從而將它們用作mixin。正確使用python中的mixins
此時,A可以通過self.whatever訪問B和C上的任何屬性。 B可以通過self.whatever訪問A和C上的任何屬性。而C可以通過self.whatever訪問A和B上的任何屬性。
在python中使用這種「混合」模式時,有哪些應該「知道」如何與其他人交互?例如,C應該只在A/B中使用功能,反之則不然?或者應該A/B只使用C上的功能,但反之亦然?
編輯 - 這是我從另一位作者繼承的代碼。解釋是在python中使用mixin模式時,這是可以接受的設計。你們確認事實並非如此。正如我在下面的評論中提到的,我永遠不會用這種方式去討論面向對象的設計,我會重構代碼。我很樂意看到關於我不明白的「mixin」模式的可能性,因此提出了這個問題。也感謝您的反對票。
對於Python中的類如何工作,您似乎很困惑。你在類之間訪問的例子並不合理。 – Marcin 2012-03-06 21:54:05
「Mixins」在Python中不存在(作爲語法結構;模式可以在代碼中實現)。這是直接的繼承。 – 2012-03-06 22:03:01
@Marcin,我上面提到的*在技術上起作用。這不是我編寫的代碼,我試圖給作者帶來一些好處,因爲Python中使用了mixin模式,這似乎並不理解。在其他面向對象技術中,我已經使用了上面列出的某些部分,甚至在技術上也不可能,即使它們是,它也會是可怕的面向對象設計。我將重構代碼以解決它。 – 2012-03-06 22:30:32