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