She*_*ran 5 python inheritance abstract-class multiple-inheritance python-3.x
说我有
class A:
# Some code
Run Code Online (Sandbox Code Playgroud)
然后,我想创建一个抽象类B的A,这本身就是混凝土。我是否应该为此目的使用多重继承?如果是这样,我应该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)
是的,多重继承是一种方法。父类的顺序无关紧要,因为不ABC包含任何方法或属性。ABC该类的唯一“特征”是它的元类是ABCMeta,所以class B(ABC, A):和class B(A, ABC):是等价的。
另一种选择是直接将B的元类设置为ABCMeta如下所示:
class B(A, metaclass=ABCMeta):
Run Code Online (Sandbox Code Playgroud)