8.16。 新着 —ランタイム内部オブジェクトの作成
new モジュールを使用すると、インタプリタオブジェクト作成関数へのインターフェイスが可能になります。 これは、通常の作成関数を使用するのではなく、新しいオブジェクトを「魔法のように」作成する必要がある場合に、主にマーシャルタイプの関数で使用するためのものです。 このモジュールはインタプリタへの低レベルのインターフェースを提供するため、このモジュールを使用するときは注意が必要です。 オブジェクトが使用されるときにインタープリターをクラッシュさせる無意味な引数を指定することができます。
new モジュールは、次の関数を定義します。
- new.instance(class[, dict])
- この関数は、
__init__()
コンストラクターを呼び出さずに、辞書 dict を使用してクラスのインスタンスを作成します。 dict を省略した場合またはNone
の場合、新しいインスタンス用に新しい空の辞書が作成されます。 オブジェクトが一貫した状態になるという保証はないことに注意してください。
- new.instancemethod(function, instance, class)
- この関数は、 instance にバインドされているか、 instance が
None
の場合はバインド解除されているメソッドオブジェクトを返します。 関数は呼び出し可能である必要があります。
- 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 の新しいクラスオブジェクトを返します。