class A(object):
def foo(self):
print "A - foo"
def foo2(self):
print "foo2"
self.foo()
class B(A):
def foo(self):
print "B - foo"
def foo2(self):
super(B, self).foo2()
B().foo2()
我試圖讓[senario1]:Python的超:調用它包含由派生類中重寫另一個基類方法的基類方法
foo2
A - foo
但得到了[senario2]:
foo2
B - foo
改爲。
我發現the explanation,但我想知道是否有一種方法得到[senario1]而不更改方法foo
在A
類中的名稱?要做到這一點
你可以改變'A.foo2',使其明確要求' A.foo(self)',但這不是一個很好的解決方案。我認爲最恰當的解決辦法是改變'B.foo'的名字。如果它不應該覆蓋'A.foo',那麼,不要覆蓋'A.foo'。 –
我不知道會發生什麼,如果你在'B.foo2'裏面說'something .__ class__ = A',然後調用'self.foo2()',然後再次'self .__ class__ = B'。在一個簡單的例子中,我測試了這個按預期工作,可能是你想要的。 – Aguy