下表显示了遍及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