Мне нужно переопределить родительский метод и вызвать метод бабушки дедушки через mixin. Является ли это возможным?Вызовите метод бабушки и дедушки без выполнения родительского метода с помощью Mixin
Например: 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 ...
Теперь мне нужно переопределить метод class_name
из B
и называют это супер.
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
Теперь, когда я назвал D().class_name()
, он должен печатать только "Mixin" and "A"
. Не «B»
Возможно, это можно сделать с помощью 'mro' (порядок разрешения метода), но я думаю, что он сломается, если вы написали' class D (B, Mixin) '. – RedX
Решение: http://pastebin.com/k57Bipk2 – nKandel