0
class MyClass(Class1, Class2):
    pass

両方の親にはgetImage方法があります。

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

どちらgetImageが呼ばれますか?どちらを呼び出すかを指定するにはどうすればよいですか?

4

1 に答える 1

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ます。

多重継承についてさらに読む

mroについてさらに読む

于 2013-01-17T01:38:10.013 に答える