【发布时间】:2019-08-30 15:39:05
【问题描述】:
在 Python 3 中,我可以执行以下操作:
>>> class A:
... pass
...
>>> A.mro()
[<class '__main__.A'>, <class 'object'>]
但在 Python 2.7.16 中,我得到一个 AttributeError:
>>> class A:
... pass
...
>>> A.mro()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class A has no attribute 'mro'
>>> A.__mro__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class A has no attribute '__mro__'
我知道,如果我们转换为“新”样式对象(继承自 object),这个问题就会消失:
>>> class A(object):
... pass
...
>>> A.mro()
[<class '__main__.A'>, <type 'object'>]
但我的用例在pdb,我正在处理大量需要大量重构的对象,有没有办法使用旧式类访问 MRO?
【问题讨论】:
-
相关:stackoverflow.com/q/4015417/1324033 - “在 Python 2 中:总是显式地从对象继承。”
-
此时,旧式类应该被认为是一个错误,而不是需要解决的问题。 Python 2 几乎已经死了。当我说这个问题比 Stack Overflow 更适合于 retrocomputing.stackexchange.com 时,我主要是在开玩笑,但并不完全是。
标签: python python-2.7 pdb method-resolution-order