下表顯示了遍及Python使用的各種抽象基類。然而,我有點困惑(在這方面)python抽象基類,mixin和抽象方法之間的區別
Abstract Methods
列和Mixin Methods
列之間的區別是什麼。一個是可選的,另一個不是?
我一直在思考它,每一個「理論」似乎都不對。
下表顯示了遍及Python使用的各種抽象基類。然而,我有點困惑(在這方面)python抽象基類,mixin和抽象方法之間的區別
Abstract Methods
列和Mixin Methods
列之間的區別是什麼。一個是可選的,另一個不是?
我一直在思考它,每一個「理論」似乎都不對。
在任何抽象方法列,你必須自己實現。 ABC提供了Mixin方法列中方法的默認實現,並根據您要編寫的方法實現。
抽象方法是那些你從這個ABC繼承時必須定義的方法。
Mixin列列出了您可以使用的方法,您可以通過從object
而不是從這個ABC繼承而免費獲得它們。例如,如果您定義了__getitem__
,則可以在之後自動使用__iter__
。
從這些類繼承的另一個好處是任何人都可以事後看到你的類是什麼意思,因爲它是issubclass(your_class, any_ABC)
和任何實例是isinstance(your_object, any_ABC)
。但是,這是在你發佈的表格之後的教程中編寫的。
*「抽象方法」*:您必須提供。 *「混合方法」*:那麼你會得到。 – jonrsharpe