问题描述
在Python 3.4+中,我们可以做到
class Foo(abc.ABC):
...
或者我们可以做到
class Foo(metaclass=abc.ABCMeta):
...
我应该注意两者之间是否有任何差异?
1楼
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
唯一的区别是,在前一种情况下,您需要一个简单的继承,在后一种情况下,您需要指定元类。
从 (强调我的):
新类
ABC
将ABCMeta
作为其元类。 使用ABC
作为基类与指定metaclass=abc.ABCMeta
具有基本相同的效果, 但更容易键入和更容易阅读 。
相关问题: