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

时间:2018-09-23 06:01:06

标签: python python-3.x inheritance abstract-class multiple-inheritance

说我有

class A:
    # Some code

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

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

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

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

1 个答案:

答案 0 :(得分:3)

是的,多重继承是做到这一点的一种方法。父类的顺序无关紧要,因为ABC不包含任何方法或属性。 ABC类的唯一“特征”是其metaclassABCMeta,因此class B(ABC, A):class B(A, ABC):是等效的。

另一种选择是像这样直接将B的元类设置为ABCMeta

class B(A, metaclass=ABCMeta):