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。
我想說,這是偏好問題,對我個人來說,第一種方法更干凈
添加回答
舉報