如何在 Python 3 中创建具体超类的抽象子类?

How to create an abstract subclass of a concrete superclass in Python 3?

说我有

class A:
    # Some code

然后,我想创建一个A的抽象子类B,它本身就是具体的。我应该为此目的使用多重继承吗?如果是这样,我是否应该先导入 ABC,如

class B(ABC, A):
    @abstractmethod
    def some_method():
        pass

,或者我应该最后导入它,如

class B(A, ABC):
    @abstractmethod
    def some_method():
        pass

是的,多重继承是一种方法。父 类 的顺序无关紧要,因为 ABC contains no methods or attributes. The sole "feature" of the ABC class is that its metaclass is ABCMeta,所以 class B(ABC, A):class B(A, ABC): 是等价的。

另一种选择是直接将 B 的元类设置为 ABCMeta,如下所示:

class B(A, metaclass=ABCMeta):