Python中MRO解析顺序是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2397个文字,预计阅读时间需要10分钟。
方法解析顺序(Method Resolution Order,MRO)解析如下:
从一段代码开始,考虑以下类和继承关系:
pythonclass A(object): def foo(self): print('A.foo()')
class B(object): def foo(self): print('B.foo()')
class C(B, A): pass
c=C()c.foo()
C同时继承了B和A。根据MRO规则,Python会按照以下顺序查找方法:
1. C
2.B
3.A
4.object(基类)
因此,当调用`c.foo()`时,Python会首先在C中查找`foo`方法,然后是B,接着是A,最后是object。由于B中定义了`foo`方法,所以会执行B的`foo`方法,输出`B.foo()`。
本文共计2397个文字,预计阅读时间需要10分钟。
方法解析顺序(Method Resolution Order,MRO)解析如下:
从一段代码开始,考虑以下类和继承关系:
pythonclass A(object): def foo(self): print('A.foo()')
class B(object): def foo(self): print('B.foo()')
class C(B, A): pass
c=C()c.foo()
C同时继承了B和A。根据MRO规则,Python会按照以下顺序查找方法:
1. C
2.B
3.A
4.object(基类)
因此,当调用`c.foo()`时,Python会首先在C中查找`foo`方法,然后是B,接着是A,最后是object。由于B中定义了`foo`方法,所以会执行B的`foo`方法,输出`B.foo()`。

