Python多重继承调用一个类的方法,但是哪一个呢?

2024-10-17 08:36:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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?如何指定要调用哪一个?你知道吗


Tags: to方法myclasspasscallclassthingwant
1条回答
网友
1楼 · 发布于 2024-10-17 08:36:08

在这种情况下,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

相关问题 更多 >