3

我有以下 Python 代码。如何在不更改类定义的情况下让 c 返回 2?或者不同的说法。如何访问具有多重继承的对象中的重写方法?

class A(object):
    def foo(self):
        return 1

class B(object):
    def foo(self):
        return 2

class C(A, B):
    def __init__(self):
        A.__init__(self)
        B.__init__(self)

c = C()
c.foo() # Returns 1
4

2 回答 2

0

就在问了这个问题之后,我在其他地方得到了答案,所以这里是:

import types
c.foo = types.MethodType(B.foo, c)
于 2013-04-01T19:01:24.480 回答
0

您可以显式调用未绑定方法:

>> B.foo(c)
2
于 2013-04-01T19:29:20.393 回答