Python3.x中没有方法解析顺序(__mro__)?

joa*_*inn 1 python

我想知道方法解析顺序属性mro在Python 3.x中不再可用了.例如,使用Python 3.5.2并创建一个随机类对象实例A,内置或自我实现

A = dict()
Run Code Online (Sandbox Code Playgroud)

然后打电话

A.__mro__
Run Code Online (Sandbox Code Playgroud)

不起作用,提高

AttributeError: 'A' object has no attribute '__mro__'
Run Code Online (Sandbox Code Playgroud)

我尝试使用A.mro(),但这会产生相同类型的异常.我现在如何收到方法解析订单?

Ant*_*ala 8

这不适用于实例.错误提示该变量A中的问题是未绑定到的类型,但以一个实例类的A.类型(类)非常有__mro__:

>>> int.__mro__
(<class 'int'>, <class 'object'>)
>>> class Foo():
...     pass
... 
>>> Foo.__mro__
(<class '__main__.Foo'>, <class 'object'>)
Run Code Online (Sandbox Code Playgroud)

由于A是类型的实例而不是类型本身,因此您可以使用type(A).__mro__.

另外,你的代码也不适用于Python 2; 不,实例也没有__mro__.