Итак, у меня такая ситуация.Python Call Parent Method Multiple Inheritance
class A(object):
def foo(self, call_from):
print "foo from A, call from %s" % call_from
class B(object):
def foo(self, call_from):
print "foo from B, call from %s" % call_from
class C(object):
def foo(self, call_from):
print "foo from C, call from %s" % call_from
class D(A, B, C):
def foo(self):
print "foo from D"
super(D, self).foo("D")
d = D()
d.foo()
Результат кода
foo from D
foo from A, call from D
Я хочу призвать все родительский метод, в данном случае, метод Foo из D
класса без использования супер в родительском классе как A
. Я просто хочу назвать супер из класса D
. Класс A
, B
и C
- это как класс mixin, и я хочу назвать все методы foo от D
. Как я могу достичь этого?
Это немного отрывочно ... Что делать, если у вас теперь есть два класса, которые наследуются от D, а затем еще один класс, который наследуется от обоих? Теперь 'foo' дважды вызовет' A.foo'. – mgilson
Или что происходит, если 'B.foo' не существует? И, наконец, я думаю, что это должно быть 'cls.foo (self)', а не 'cls(). Foo()' – mgilson
@mgilson. Тогда мы должны использовать 'mro'? И это не классные методы, верно? Итак, мне пришлось создавать объекты, чтобы их вызвать. – thefourtheye