所以,我有這樣的情況。Python調用父方法多繼承
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類,我想調用D
的所有foo方法。我怎樣才能做到這一點?
這是一個有點粗略的......如果你現在有兩個類都從D繼承,然後從這兩個繼承另一個類?現在'foo'會調用'A.foo'兩次。 – mgilson
或者如果'B.foo'不存在會發生什麼?最後,我認爲它應該是'cls.foo(self)',而不是'cls()。foo()' – mgilson
@mgilson然後,我們必須使用'mro'?那些不是階級方法,對嗎?所以,我不得不創建對象來調用它們。 – thefourtheye