# 16 `new` -- ランタイム内部オブジェクトの作成

`new`モジュールはインタプリタオブジェクト作成関数へのインターフェイスを与えます。新しいオブジェクトを``魔法を使ったように''作り出す必要がある、通常の作成関数が使えないときに、これは主にマーシャル型関数で使われます。このモジュールはインタプリタへの低レベルインターフェイスを提供します。したがって、このモジュールを使うときには注意しなければなりません。 オブジェクトが利用される時にインタプリタをクラッシュさせるような引数を 与えることもできてしまいます。

`new`モジュールは次の関数を定義しています:

`instance`( | class[, dict])

  この関数は`__init__()`コンストラクタを呼び出さずに辞書dictをもつclassのインスタンスを作り出します。dictが省略されるか、`None`である場合は、新しいインスタンスのために新しい空の辞書が作られます。オブジェクトがいつもと同じ状態であるという保証はないことに注意してください。

`instancemethod`( | function, instance, class)

  この関数はinstanceに束縛されたメソッドオブジェクトか、あるいはinstanceが`None`の場合に束縛されていないメソッドオブジェクトを返します。functionは呼び出し可能でなければなりません。

`function`( | code, globals[, name[, argdefs[, closure]]])

  与えられたコードとグローバル変数をもつ(Python)関数を返します。nameを与えるならば、文字列か`None`でなければならない。文字列の場合は、関数は与えられた名前をもつ。そうでなければ、関数名は`code.co_name`から取られる。argdefsを与える場合はタプルでなければならず、パラメータのデフォルト値を決めるために使われます。 closure を与える場合は`None`または名前を`code.co_freevars`に束縛するセルオブジェクトのタプルである必要があります。

  )が与えられていると、

`code`( | argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)

  この関数は`PyCode_New()`というC関数へのインターフェイスです。

`module`( | name[, doc])

  この関数はnameという名前の新しいモジュールオブジェクトを返します。nameは文字列でなければならない。 省略可能な doc 引数はどんな型でもよい。

`classobj`( | name, baseclasses, dict)

  この関数は新しいクラスオブジェクトを返します。そのクラスオブジェクトは(クラスのタプルであるべき)baseclassesから派生し、名前空間dictを持ち、nameという名前です。