Python 3.x 抽象类,重复继承,具体示例
我正在开发一个我还没有完全掌握的代码库。我有以下三级结构:Python 3.x 抽象类,重复继承,具体示例,python-3.x,abstract-class,multiple-inheritance,abc,Python 3.x,Abstract Class,Multiple Inheritance,Abc,我正在开发一个我还没有完全掌握的代码库。我有以下三级结构: class Processor(ABC): @abstractmethod def process(self, *args: Any, **kwargs: Any): pass class AbstractEsTask(Processor, ABC): def calculate(self, param): ... @DplTask class EsDirectTask(
class Processor(ABC):
@abstractmethod
def process(self, *args: Any, **kwargs: Any):
pass
class AbstractEsTask(Processor, ABC):
def calculate(self, param):
...
@DplTask
class EsDirectTask(AbstractEsTask):
def process(self):
return self.calculate(param = "DIRECT")
在我看来,从ABC
继承AbstractEsTask
是多余的,因为Processor
已经这样做了。
我已尝试相应地编辑代码(class AbstractEsTask(Processor,ABC)
->class AbstractEsTask(Processor)
),但无法观察到输出中的任何更改。但是,由于它是一个庞大的代码库,这可能还不够。
我的理解(上面用粗体表示)正确吗?您的陈述是正确的,因为当
AbstractEsTask
继承Processor
时,它将访问ABC
的所有值
或者换句话说,如果python在AbstractEsTask
中找不到方法,它将首先查找处理器,然后查找ABC
。因为Processor
拥有ABC
拥有的所有元素,所以永远不需要ABC
。如果在处理器
中找不到成员,则在ABC
中将找不到该成员
我想不出有任何一种情况需要像你上面描述的那样的双重继承。即使Processor
修改了ABC
的其中一种方法,继承也不会受到影响,因为Processor
首先被继承
这一点在本节中进行了描述