python抽象基类,mixin&的区别抽象方法

时间:2016-03-18 20:05:50

标签: python abstract terminology mixins

下表显示了遍布python的各种抽象基类。但是,我有点困惑(在这种情况下)

Abstract Methods列和Mixin Methods列之间的区别是什么。一个是可选的,另一个不是吗?

我一直在考虑它,我的每一个“理论”似乎都不正确。

reference

enter image description here

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

抽象方法是您从此ABC继承时必须定义的方法。

Mixin列列出了您之后可以使用的方法,您可以通过不继承object而是从此ABC继承来免费获取这些方法。如果您定义__getitem__,则可以在之后自动使用__iter__

从这些类继承的另一个好处是,任何人都可以看到你的课程应该是什么,因为它是issubclass(your_class, any_ABC),任何实例都是isinstance(your_object, any_ABC)。但这是在你发布的表之后的教程中写的。