8.16. new —ランタイム内部オブジェクトの作成—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/new
移動先:案内検索

8.16。 新着 —ランタイム内部オブジェクトの作成

バージョン2.6以降非推奨: new モジュールはPython3で削除されました。 代わりに、 types モジュールのクラスを使用してください。


new モジュールを使用すると、インタプリタオブジェクト作成関数へのインターフェイスが可能になります。 これは、通常の作成関数を使用するのではなく、新しいオブジェクトを「魔法のように」作成する必要がある場合に、主にマーシャルタイプの関数で使用するためのものです。 このモジュールはインタプリタへの低レベルのインターフェースを提供するため、このモジュールを使用するときは注意が必要です。 オブジェクトが使用されるときにインタープリターをクラッシュさせる無意味な引数を指定することができます。

new モジュールは、次の関数を定義します。

new.instance(class[, dict])
この関数は、__init__()コンストラクターを呼び出さずに、辞書 dict を使用してクラスのインスタンスを作成します。 dict を省略した場合またはNoneの場合、新しいインスタンス用に新しい空の辞書が作成されます。 オブジェクトが一貫した状態になるという保証はないことに注意してください。
new.instancemethod(function, instance, class)
この関数は、 instance にバインドされているか、 instanceNoneの場合はバインド解除されているメソッドオブジェクトを返します。 関数は呼び出し可能である必要があります。
new.function(code, globals[, name[, argdefs[, closure]]])
指定されたコードとグローバルを持つ(Python)関数を返します。 name を指定する場合は、文字列またはNoneである必要があります。 文字列の場合、関数には指定された名前が付けられます。それ以外の場合、関数名はcode.co_nameから取得されます。 argdefs が指定されている場合、それはタプルである必要があり、パラメーターのデフォルト値を決定するために使用されます。 Closure を指定する場合は、Noneか、code.co_freevarsの名前にバインドするオブジェクトを含むセルオブジェクトのタプルである必要があります。
new.code(argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)
この関数は、 PyCode_New() C関数へのインターフェイスです。
new.module(name[, doc])
この関数は、 name という名前の新しいモジュールオブジェクトを返します。 name は文字列である必要があります。 オプションの doc 引数には、任意のタイプを指定できます。
new.classobj(name, baseclasses, dict)
この関数は、 baseclasses (クラスのタプルである必要があります)から派生し、名前空間 dict を持つ名前 name の新しいクラスオブジェクトを返します。