2013-01-17 116 views
0
class MyClass(Class1, Class2): 
    pass 

父母雙方有一個getImage方法。Python多繼承 - 調用一個類的方法,但哪一個?

thing = MyClass() 
thing.getImage() #I want to call Class1's 
thing.getImage() #I want to call Class2's 

哪個getImage被調用?我如何指定要撥打哪一個?

+0

看到這個問題:http://stackoverflow.com/questions/1848474/method-resolution-order-mro-in-new-style-python-classes –

回答

2

在這種情況下,thing.getImage將調用Class1.getImage提供它的存在。如果你想調用其他的,你可以使用更長的形式:

Class2.getImage(thing) 

這些東西可以通過類的方法解析順序進行檢查(__mro__):

>>> class foo(object): pass 
... 
>>> class bar(object): pass 
... 
>>> class baz(foo,bar): pass 
... 
>>> print baz.__mro__ 
(<class '__main__.baz'>, <class '__main__.foo'>, <class '__main__.bar'>, <type 'object'>) 

這表明baz搜索對於該方法,然後再foo,然後bar最後object

Further reading about multiple inheritance

Further reading about mro

相關問題