2
親メソッドをオーバーライドし、grandparentメソッドをmixinで呼び出す必要があります。出来ますか?親メソッドをMixinで実行しないでGrandparentメソッドを呼び出す
たとえば、A
およびB
はライブラリクラスです。
class A(object):
def class_name(self):
print "A"
class B(A):
def class_name(self):
print "B"
super(B, self).class_name()
# other methods ...
今私はB
からclass_name
メソッドをオーバーライドして、それはスーパーだ呼び出す必要があります。私はD().class_name()
を呼び出したときに
class Mixin(object):
def class_name(self):
print "Mixin"
# need to call Grandparent class_name instead of parent's
# super(Mixin, self).class_name()
class D(Mixin, B):
# Here I need to override class_name method from B and call B's super i.e. A's class_name,
# It is better if I can able to do this thourgh Mixin class. (
pass
今、それだけで"Mixin" and "A"
を印刷する必要があります。
おそらく 'mro'(メソッドの解決順序)を使って行うことができますが、' class D(B、Mixin) 'を書いた場合には壊れると思います。 – RedX
ソリューション:http://pastebin.com/k57Bipk2 – nKandel