父类方法可以调用将在子类中实现的抽象方法吗?

原学程将引见女类办法不妨挪用将在子类中完成的笼统办法吗?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

父类方法可以调用将在子类中实现的抽象方法吗? 教程 第1张

成绩描写

假如我有1个包括二个办法的女类:

class Parent():
 @abstractmethod
 @staticmethod
 def functionA():
 pass
 
 def functionB():
 return __class__.functionA() + 一

我完成了1身材类:

class Child(Parent):
 def functionA(): # this function is different for each kind of child
  return 三

回根结底,子类的目标只是挪用functionB()
它起感化了吗?固然,我不妨将functionB()搁到子类中并使其任务,但是由于functionB()关于每一种子类皆是雷同的,所以我没有想为每一个类编辑反复的代码?

别的,我在这里应用__class__适合吗?

推举谜底

起首,functionB自己应当是类办法。

@classmethod
def functionB(cls):
 return cls.functionA() + 一

其次,您依然必需将functionA装潢为每一身材类中的动态办法;不然,叨教用虚例办法调换继续的动态办法。

class Child(Parent):

 @staticmethod
 def functionA():
  return 三

佳了闭于女类办法不妨挪用将在子类中完成的笼统办法吗?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。