How to know MRO in python2
In python3, we can use '__mro__'
to get the method-resolution-order like below:
>>> class a:
... pass
...
>>> a.__mro__
(<class '__main__.a'>, <class 'object'>)
>>>
Does python2 has an alternative method for this? I tried to find one but failed.
>>> class a: ... pass ... >>> dir(a) ['__doc__', '__module__'] >>> class a(object): ... pass ... >>> dir(a) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__modu
le__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
Answer
mro()
is available since Python 2.2 (https://www.python.org/download/releases/2.3/mro/)
However the class must be a new style class.
>>> class A: pass
>>> A.mro()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class A has no attribute 'mro'
>>> class A(object): pass
>>> A.mro()
[<class '__main__.A'>, <type 'object'>]