来自Python 3.1中的新导入classobj

时间:2011-02-18 09:12:37

标签: python

如何更改给定的python 2.x语句以使其在3.1上编译。

不起作用的代码行。

from new import classobj

错误是“没有新模块”。

3 个答案:

答案 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