首页 > 代码库 > Python的方法解析顺序(MRO)

Python的方法解析顺序(MRO)

mro即method resolution order,主要用于在多继承时判断调的属性的路径(来自于哪个类)。

http://blog.csdn.net/imzoer/article/details/8737642

 

你真的理解Python中MRO算法吗?

 API:

 1 class type(object):
 2     """
 3     type(object) -> the object‘s type
 4     type(name, bases, dict) -> a new type
 5     """
 6     def mro(self): # real signature unknown; restored from __doc__
 7         """
 8         mro() -> list
 9         return a type‘s method resolution order
10         """
11         return []

 

测试代码:

 1 #!/usr/bin/env python
 2 class A(object):
 3     def __init__(self):
 4         print "enter A"
 5         print("leave A")
 6 
 7 
 8 class B(object):
 9     def __init__(self):
10         print "enter B"
11         print "leave B"
12 
13 
14 class C(A,B):
15     def __init__(self):
16         print "enter C"
17         super(C, self).__init__()
18         print "leave C"
19 
20 b = C()
21 mo = b.__class__.mro()
22 print mo

 

输出:

enter C
enter A
leave A
leave C
[<class ‘__main__.C‘>, <class ‘__main__.A‘>, <class ‘__main__.B‘>, <type ‘object‘>]

Python的方法解析顺序(MRO)