2011-02-18 40 views
3

3.1でコンパイルされたpython 2.x文を変更するにはどうすればよいですか?from new import classobj in Python 3.1

動作しないコード行。

from new import classobj 

エラーは「新しいモジュールはありません」です。

答えて

4

new.classobjです旧式の型の型。 Python 3.xには古いスタイルの型はありません。コードをPython 2.xからPython 3.xに移植するには、最初に最新のPython 2.x標準に移行する必要があります。その場合、古いスタイルのクラスを使用しないで新しいスタイルのクラスのみを使用することを意味します。

だから、答えは代わりにclassobj使用typeのですが、type最初に使用する2.xのコードをアップグレードしてからのPython 3.xのBTW

への移植を見て、ためにPEP 3108を参照してくださいする必要がありますPython 3.xで削除されたモジュールのリスト特に:

新しい

  • '種類' モジュールからの名前のちょうど再バインド。
  • ほとんどの型を簡単に取得するために、組み込み型を呼び出すこともできます。
  • Docstringは、このモジュールはリビジョン27241
    (2002-06-15)としては役に立たないと述べています。
+0

もっと仕事のように見えます。:)、ありがとう。 –

3

あなたはtype機能を使用できます。

X = type('X', (object,), {'a': 1}) 
+0

投稿されたページが間違っていますか?これはここで質問される質問とは関係ありません。 – Wogan

+0

いいえ、それは良い答えですが、おそらくあまりにも明確な電信です。また、 'type'は関数ではなく型です。 – Duncan

0

あなたがパッケージ内にある場合は、相対インポートにそれを変更する必要があります:Pythonの2.xで

from .new import classobj 
+0

私は気づいていませんでしたが、 'new'は実際にはPythonバージョン3.0より前の組み込みモジュールです。 Python 3.0では削除されました。 – XORcist