我想擴展一個模塊中的類層次結構。在Python中擴展類層次結構
要擴展的模塊看起來像這樣。 模塊FOO:
class bar(object): pass
class spam(bar): pass
class eggs(bar): pass
現在我想擴展這些類:使用
class my_bar(foo.bar):
def new_func(): pass
class my_spam(foo.spam): pass
class my_eggs(foo.eggs): pass
在my_bar這樣做,一個新的功能new_func()不會在my_spam實例可
my_spam_instance.new_func()
什麼是最好的(「最pythonic」)的方式來實現這一目標?我想到了多重繼承,像這樣:
class my_bar(foo.bar): pass
class my_spam(foo.bar, my_bar): pass
class my_eggs(foo.eggs, my_bar): pass
雖然我從來沒有真正使用它,但我不確定這是最好的方法。
你寫的東西應該可以工作,但是「鑽石關係」(my_spam繼承自foo.bar和my_bar,都是從bar繼承的)會使事情變得難以理解。你可以讓my_bar不從foo.bar(mixin)繼承。你可以給你想要擴展的類提供一些背景嗎? – syntonym
根據你在這裏提供的細節,多重繼承(MI)應該對你有用。 – thebjorn