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
が呼ばれますか?どちらを呼び出すかを指定するにはどうすればよいですか?
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
が呼ばれますか?どちらを呼び出すかを指定するにはどうすればよいですか?
この場合、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
ます。