如何解决抽象类,重复继承,具体示例
我正在开发一个尚未完全掌握的代码库。我有以下3类结构:
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")
在我看来,从AbstractEsTask
继承ABC
是多余的,因为Processor
已经做到了。
我尝试相应地编辑代码(class AbstractEsTask(Processor,ABC)
-> class AbstractEsTask(Processor)
),但看不到输出的任何变化。但是,由于代码库很大,所以这可能还不够。
我的理解(上面的粗体字)正确吗?
解决方法
您的陈述是正确的,因为当AbstractEsTask
继承Processor
时,它将有权访问ABC
的所有值。
或者换句话说,如果python在AbstractEsTask
中找不到方法,它将首先在Processor中查找,然后在ABC
中查找。由于Processor
具有ABC
拥有的所有元素,因此将不再需要ABC
。如果在Processor
中找不到成员,那么在ABC
中将找不到该成员。
我想不出在任何极端情况下都需要像您上面描述的那样的双重继承。即使Processor
修改了ABC
的一种方法,继承也不会受到影响,因为Processor
首先被继承了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。