1 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
除非你想Parent用abstract繼承.load,否則直接把實(shí)現(xiàn)放進(jìn)去Parent。
如果.load僅對(duì)這兩個(gè)孩子來說很常見 - 您可以繼承Parent第三個(gè)孩子,例如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): ...
另一個(gè)是:
class LoadBase:
def load(self, *params): ...
class childA(LoadBase, Parent):
def get_paths(self, *params): ...
class childB(LoadBase, Parent):
def get_paths(self, *params): ...
請(qǐng)注意后面方法中的繼承順序,如果您繼承父類作為第一個(gè)超類,則沒有簡(jiǎn)單的方法:
如果你的 mixin 繼承Parent– 沒有明確的 MRO
如果 mixin 繼承object- 抽象上存在實(shí)例化錯(cuò)誤.load。
我想說,這是偏好問題,對(duì)我個(gè)人來說,第一種方法更干凈
添加回答
舉報(bào)