下表显示了遍布python的各种抽象基类。但是,我有点困惑(在这种情况下)
Abstract Methods
列和Mixin Methods
列之间的区别是什么。一个是可选的,另一个不是吗?
我一直在考虑它,我的每一个“理论”似乎都不正确。
答案 0 :(得分:8)
“抽象方法”专栏中的任何内容,您都必须自己实现。 ABC提供了Mixin方法列中方法的默认实现,根据您必须编写的方法实现。
答案 1 :(得分:2)
抽象方法是您从此ABC继承时必须定义的方法。
Mixin列列出了您之后可以使用的方法,您可以通过不继承object
而是从此ABC继承来免费获取这些方法。如果您定义__getitem__
,则可以在之后自动使用__iter__
。
从这些类继承的另一个好处是,任何人都可以看到你的课程应该是什么,因为它是issubclass(your_class, any_ABC)
,任何实例都是isinstance(your_object, any_ABC)
。但这是在你发布的表之后的教程中写的。