当前位置: 代码迷 >> python >> 使用ABC和ABCMeta之间有什么区别吗?
  详细解决方案

使用ABC和ABCMeta之间有什么区别吗?

热度:89   发布时间:2023-06-16 14:06:59.0

在Python 3.4+中,我们可以做到

class Foo(abc.ABC):
    ...

或者我们可以做到

class Foo(metaclass=abc.ABCMeta):
    ...

我应该注意两者之间是否有任何差异?

abc.ABC基本上只是metaclass=abc.ABCMeta一个额外层。 abc.ABC为我们隐式定义了元类。

(来源: : )

class ABC(metaclass=ABCMeta):
    """Helper class that provides a standard way to create an ABC using
    inheritance.
    """
    pass

唯一的区别是,在前一种情况下,您需要一个简单的继承,在后一种情况下,您需要指定元类。

从 (强调我的):

新类ABCABCMeta作为其元类。 使用ABC作为基类与指定metaclass=abc.ABCMeta具有基本相同的效果, 但更容易键入和更容易阅读


相关问题: