情况是:抽象基类定义了一组通用动作,而一堆专门的动作留给了子类。
from abc import ABC,abstractmethod
class Common(ABC):
def __init__(self,ord_obj):
self.ord_obj = ord_obj
self.abs_obj = self.generate_abs_obj(?)
@abstractmethod
def generate_abs_obj(self):
# Will be implemented in subclasses
pass
def common_operation(self):
return self.ord_obj + self.abs_obj
class specialize_1(Common):
def __init__(self):
super().__init__()
def generate_abs_obj(self,param_1):
# do something
return 25
class specialize_2(Common):
def __init__(self):
super().__init__()
def generate_abs_obj(self,param_1,param_2):
# do something
return param_1+param_2
如上所述,abs_obj
是由抽象方法生成并在基类__init__
中初始化的对象。将通过常规方法在基类中使用它。但是,子类中的generate_abs_obj
具有不同的接口。如何使用不同的参数调用super().__init__()
?