# インスタンスメソッドオブジェクト(Instance Method Objects)

インスタンスメソッドとは `PyCFunction` のためのラッパーであり、 `PyCFunction` をクラスオブジェクトにバインドするための新しいやり方です。これは以前の `PyMethod_New(func, NULL, class)` の呼び出しを置き換えます。

PyTypeObject `PyInstanceMethod_Type`

  `PyTypeObject` のインスタンスは Python のインスタンスメソッドの型を表現します。これは Python のプログラムには公開されません。

int `PyInstanceMethod_Check`(PyObject *o)

  o がインスタンスメソッドオブジェクト (`PyInstanceMethod_Type` 型である) 場合に真を返します。パラメータは `NULL` にできません。

PyObject* `PyInstanceMethod_New`(PyObject *func)
  Return value: New reference.

  任意の呼び出し可能オブジェクト func を使った新たなメソッドオブジェクトを返します。関数 func はメソッドが呼び出されたときに呼び出されるオブジェクトです。

PyObject* `PyInstanceMethod_Function`(PyObject *im)
  Return value: Borrowed reference.

  インスタンスメソッド im に関連付けられた関数オブジェクトを返します。

PyObject* `PyInstanceMethod_GET_FUNCTION`(PyObject *im)
  Return value: Borrowed reference.

  `PyInstanceMethod_Function()` のマクロ版で、エラーチェックを行いません。

# メソッドオブジェクト

メソッドは関数オブジェクトに束縛されています。メソッドは常にあるユーザー定義のクラスに束縛されているのです。束縛されていないメソッド(クラスオブジェクトに束縛されたメソッド)は利用することができません。

PyTypeObject `PyMethod_Type`

  この `PyTypeObject` のインスタンスは Python のメソッド型を表現します。このオブジェクトは、 `types.MethodType` として Python プログラムに公開されています。

int `PyMethod_Check`(PyObject *o)

  o がメソッドオブジェクト (`PyMethod_Type` 型である) 場合に真を返します。パラメータは `NULL` にできません。

PyObject* `PyMethod_New`(PyObject *func, PyObject *self)
  Return value: New reference.

  任意の呼び出し可能オブジェクト func とメソッドが束縛されるべきインスタンス self を使った新たなメソッドオブジェクトを返します。 関数 func は、メソッドが呼び出された時に呼び出されるオブジェクトです。 self は `NULL` にできません。

PyObject* `PyMethod_Function`(PyObject *meth)
  Return value: Borrowed reference.

  メソッド meth に関連付けられている関数オブジェクトを返します。

PyObject* `PyMethod_GET_FUNCTION`(PyObject *meth)
  Return value: Borrowed reference.

  `PyMethod_Function()` のマクロ版で、エラーチェックを行いません。

PyObject* `PyMethod_Self`(PyObject *meth)
  Return value: Borrowed reference.

  メソッド meth に関連付けられたインスタンスを返します。

PyObject* `PyMethod_GET_SELF`(PyObject *meth)
  Return value: Borrowed reference.

  `PyMethod_Self()` のマクロ版で、エラーチェックを行いません。

int `PyMethod_ClearFreeList`()

  free list をクリアします。解放された要素数を返します。