2013-01-15 50 views
3

我有以下Python代碼。如何在不更改類定義的情況下讓c返回2?或者不同地陳述。如何在具有多重繼承的對象中訪問重寫的方法?有沒有辦法在Python中的多重繼承對象中訪問重寫的方法?

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 
+2

請後的結果作爲答案你自己的問題。 –

+0

8小時後,您將可以將答案添加到自己的問題中。 – pranshus

+0

完成,謝謝你讓我知道我應該單獨回答。 – peralmq

回答

0

問這個問題後,就我得到的回答其他地方所以這裏有雲:

import types 
c.foo = types.MethodType(B.foo, c) 
+0

只是指出你只是在改變對象'c',而不是類。 'C().foo()'仍然會返回1.這真的是你想要的嗎? – shx2

0

可以調用不受約束的方法明確:

>> B.foo(c) 
2 
相關問題