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

バインドされていないメソッドを明示的に呼び出すことができます。

>> B.foo(c)
2
于 2013-04-01T19:29:20.393 に答える
0

Just after asking this question I got an answer elsewhere so here goes:

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