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