如何更改给定的python 2.x语句以使其在3.1上编译。
不起作用的代码行。
from new import classobj
错误是“没有新模块”。
答案 0 :(得分:4)
您可以使用type
功能:
X = type('X', (object,), {'a': 1})
答案 1 :(得分:4)
在Python 2.x new.classobj
中是旧式类型的类型。 Python 3.x中没有旧式的类型。要将代码从Python 2.x移植到Python 3.x,首先需要将其提升到最新的Python 2.x标准,在这种情况下,它意味着停止使用旧式类并仅使用新式类。
所以答案不是classobj
使用type
,而是首先要升级2.x代码以使用type
,然后再看看移植到Python 3。 X
BTW,请参阅PEP 3108,了解在Python 3.x中删除的模块列表。特别是:
新
- 只需从'types'模块重新绑定名称。
- 还可以调用内置类型以轻松获取大多数类型。
- Docstring声明该模块在修订版27241中不再有用 (2002年6月15日)。
答案 2 :(得分:0)
如果您在一个包中,则需要将其更改为相对导入:
from .new import classobj