メソッドオブジェクト

C API にはメソッドオブジェクトを扱うのに便利な関数があります。

PyTypeObject PyMethod_Type

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

int PyMethod_Check(PyObject *o)

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

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

任意の呼び出し可能オブジェクト func を使った新たなメソッドオブジェクトを返します; 関数 func は、メソッドが呼び出された時に呼び出されるオブジェクトです。このメソッドをインスタンスに束縛 (bind) したい場合、 self をインスタンス自体にして、 classself のクラスにしなければなりません。それ以外の場合は selfNULL に、 class を非束縛メソッドを提供しているクラスにしなければなりません。

PyObject* PyMethod_Class(PyObject *meth)
Return value: Borrowed reference.

メソッドオブジェクト meth を生成したクラスオブジェクトを返します; インスタンスがメソッドオブジェクトを生成した場合、戻り値はインスタンスのクラスになります。

PyObject* PyMethod_GET_CLASS(PyObject *meth)
Return value: Borrowed reference.

PyMethod_Class() をマクロで実装したバージョンで、エラーチェックを行いません。

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 が束縛メソッドの場合には、メソッドに関連付けられているインスタンスを返します。それ以外の場合には NULL を返します。

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

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

int PyMethod_ClearFreeList()

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

バージョン 2.6 で追加.