Python抽象基类,Mixin与抽象方法的区别

14
下表显示了Python中普遍存在的各种抽象基类。但是,在这个上下文中,我不确定它们的具体用途。
你能解释一下“抽象方法”列和“Mixin方法”列之间的区别吗?一个列中的方法是可选实现的,另一个列中的方法是必须实现的吗? (下图) Python官方参考 - 容器的抽象基类

enter image description here


5
"抽象方法":必须提供。 "混入方法":然后你就能得到。 - jonrsharpe
2个回答

15

在“抽象方法”列中的任何内容都必须自己实现。ABC提供了“混合方法”列中方法的默认实现,这些方法是基于您需要编写的方法来实现的。


3
抽象方法是继承自该ABC时必须定义的方法。
Mixin列出了您可以在后续使用的方法,您可以通过继承不是从object而是从该ABC来免费获得它们。例如,如果您定义了__getitem__,那么您可以自动使用__iter__
从这些类继承的另一个好处是,任何人都可以看到您的类的本意,因为它是issubclass(your_class, any_ABC),并且任何实例都是isinstance(your_object, any_ABC)。但是,这是在您发布的表格之后的教程中写的。

issubclass()isinstance()上的点是什么意思? - AlanSTACK
抱歉,这不正确,这些只是带有两个参数的内置方法,谢谢。 - Ilja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接