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

She*_*ran 5 python inheritance abstract-class multiple-inheritance python-3.x

说我有

class A:
    # Some code
Run Code Online (Sandbox Code Playgroud)

然后,我想创建一个抽象类BA,这本身就是混凝土。我是否应该为此目的使用多重继承?如果是这样,我应该ABC先导入,如

class B(ABC, A):
    @abstractmethod
    def some_method():
        pass
Run Code Online (Sandbox Code Playgroud)

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

class B(A, ABC):
    @abstractmethod
    def some_method():
        pass
Run Code Online (Sandbox Code Playgroud)

Ara*_*Fey 6

是的,多重继承是一种方法。父类的顺序无关紧要,因为不ABC包含任何方法或属性。ABC该类的唯一“特征”是它的元类ABCMeta,所以class B(ABC, A):class B(A, ABC):是等价的。

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

class B(A, metaclass=ABCMeta):
Run Code Online (Sandbox Code Playgroud)