【问题标题】:python abstract base classes, difference between mixin & abstract methodpython抽象基类,mixin和抽象方法的区别
【发布时间】:2016-07-05 17:38:19
【问题描述】:

下表显示了在 Python 中使用的各种抽象基类。但是,我有点困惑(在这种情况下)

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

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

reference


【问题讨论】:

  • “抽象方法”:您必须提供。 “混合方法”:然后你会得到。

标签: python abstract terminology mixins


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • issubclass()isinstance() 上的点是怎么回事
    • 对不起,这不正确,这些只是带有两个参数的内置方法,谢谢
    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多