拡張したいモジュールにクラス階層があります。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_instance.new_func()
を使用してmy_spamインスタンスでは利用できないでしょう
これを達成するための最善の方法は何ですか?私はこのように、多重継承を考えた:
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