python abstract base 类,mixin和抽象方法的区别

python abstract base classes, difference between mixin & abstract method

以下 table 显示了在 python 中广泛使用的各种抽象基础 类。但是,我有点困惑(在这种情况下)

Abstract Methods栏和Mixin Methods栏有什么区别。一个是可选的,另一个不是?

我想了想,我的每一个"theories"好像都不对。

reference


抽象方法栏中的任何内容,您都必须自己实现。 ABC 提供了 Mixin Methods 列中方法的默认实现,根据您必须编写的方法实现。

抽象方法就是你继承这个ABC时必须定义的方法。

Mixin 列列出了您之后可以使用的方法,您可以免费获得它们,而不是从 object 继承,而是从这个 ABC 继承。如果你定义了__getitem__,你之后可以自动使用__iter__,例如

从这些 classes 继承的另一个好处是任何人都可以在事后看到您的 class 的意思,因为它是 issubclass(your_class, any_ABC) 并且任何实例都是 isinstance(your_object, any_ABC)。但是这个是在你发帖table之后的教程里写的