Skip to main content
 首页 » 编程设计

python之方法解析顺序 (__mro__) 在 Python3.x 中不可用

2025年05月04日14webabcd

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

A = dict() 

然后调用

A.__mro__ 

不工作,提高

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

我尝试使用 A.mro(),但这给出了相同类型的异常。 我现在如何接收方法解析命令?

请您参考如下方法:

这不适用于实例。该错误提示所讨论的变量 A 未绑定(bind)到类型,而是绑定(bind)到类 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__。