【发布时间】:2012-07-11 12:54:30
【问题描述】:
编辑:我的假设是错误的;下面的代码确实像我想要的那样工作。我观察到的行为原来是由我正在使用的另一部分代码引起的,我忽略了它,因为它看起来完全不相关。
所以我有一些代码结构如下:
class B(object):
def foo(self):
print "spam"
def bar(self):
do_something()
self.foo()
do_something_else()
class C(B):
def foo(self):
print "ham"
def bar(self):
super(C, self).bar()
print "eggs"
c = C()
c.bar()
这会 do_something(),打印“spam”,do_something_else(),然后打印“eggs”。然而,我想要做的是do_something(),打印“ham”,do_something_else(),然后打印“eggs”。换句话说,我想从 C 的 bar 方法中调用 B 的 bar 方法,但我希望 it 调用 C 的 foo 方法,而不是 B 的。
有没有办法做到这一点?请注意,在我正在处理的实际代码中,B 类和实际调用 c.bar() 的代码都是不断发展的第三方库的一部分,因此不得已而为之。
【问题讨论】:
-
这就是你想要的...我看不出问题。
-
所以只能写修改
C吧? -
我认为示例代码已经完成了您想要的操作 - 对我来说,它会打印 'ham' 然后打印 'eggs'
标签: python