1 回答

TA贡献1848条经验 获得超2个赞
除非你想Parent用abstract继承.load,否则直接把实现放进去Parent。
如果.load仅对这两个孩子来说很常见 - 您可以继承Parent第三个孩子,例如LoadMixin继承两者Parent并混合
一种方法是:
class LoadableChild(Parent):
def load(self, *params): ...
class childA(LoadableChild):
def get_paths(self, *params): ...
class childB(LoadableChild):
def get_paths(self, *params): ...
另一个是:
class LoadBase:
def load(self, *params): ...
class childA(LoadBase, Parent):
def get_paths(self, *params): ...
class childB(LoadBase, Parent):
def get_paths(self, *params): ...
请注意后面方法中的继承顺序,如果您继承父类作为第一个超类,则没有简单的方法:
如果你的 mixin 继承Parent– 没有明确的 MRO
如果 mixin 继承object- 抽象上存在实例化错误.load。
我想说,这是偏好问题,对我个人来说,第一种方法更干净
添加回答
举报