python abstract base 类,mixin和抽象方法的区别
python abstract base classes, difference between mixin & abstract method
以下 table 显示了在 python 中广泛使用的各种抽象基础 类。但是,我有点困惑(在这种情况下)
Abstract Methods
栏和Mixin Methods
栏有什么区别。一个是可选的,另一个不是?
我想了想,我的每一个"theories"好像都不对。
抽象方法栏中的任何内容,您都必须自己实现。 ABC 提供了 Mixin Methods 列中方法的默认实现,根据您必须编写的方法实现。
抽象方法就是你继承这个ABC时必须定义的方法。
Mixin 列列出了您之后可以使用的方法,您可以免费获得它们,而不是从 object
继承,而是从这个 ABC 继承。如果你定义了__getitem__
,你之后可以自动使用__iter__
,例如
从这些 classes 继承的另一个好处是任何人都可以在事后看到您的 class 的意思,因为它是 issubclass(your_class, any_ABC)
并且任何实例都是 isinstance(your_object, any_ABC)
。但是这个是在你发帖table之后的教程里写的
以下 table 显示了在 python 中广泛使用的各种抽象基础 类。但是,我有点困惑(在这种情况下)
Abstract Methods
栏和Mixin Methods
栏有什么区别。一个是可选的,另一个不是?
我想了想,我的每一个"theories"好像都不对。
抽象方法栏中的任何内容,您都必须自己实现。 ABC 提供了 Mixin Methods 列中方法的默认实现,根据您必须编写的方法实现。
抽象方法就是你继承这个ABC时必须定义的方法。
Mixin 列列出了您之后可以使用的方法,您可以免费获得它们,而不是从 object
继承,而是从这个 ABC 继承。如果你定义了__getitem__
,你之后可以自动使用__iter__
,例如
从这些 classes 继承的另一个好处是任何人都可以在事后看到您的 class 的意思,因为它是 issubclass(your_class, any_ABC)
并且任何实例都是 isinstance(your_object, any_ABC)
。但是这个是在你发帖table之后的教程里写的