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

时间:2017-02-23 09:36:25

标签: python

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

A = dict()

然后调用

A.__mro__

不起作用,提高

AttributeError: 'A' object has no attribute '__mro__'

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

1 个答案:

答案 0 :(得分:7)

这不适用于实例。该错误提示有问题的变量A未绑定到类型,而是绑定到类A实例。类型(类)非常有__mro__

>>> int.__mro__
(<class 'int'>, <class 'object'>)
>>> class Foo():
...     pass
... 
>>> Foo.__mro__
(<class '__main__.Foo'>, <class 'object'>)

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

此外,您的代码也不适用于Python 2;不,实例也没有__mro__