1.2 オブジェクト、型と参照回数

たいていのPython/C API関数は、PyObject*型の戻り値はもちろん 1つ以上の引数を持つ。この型は任意のPythonオブジェクトを表わす 不透明なデータ型へのポインタである。 全てのPythonオブジェクト型はたいていの状況(例えば代入、スコープルール、 そして引数の受渡し)でPython言語によって同じように扱われるので、 単一のC言語の型によって表われるべきというのが、ただ適切である。 ほとんど全部のPythonオブジェクトはヒープ上で生存する。 自動的もしくは静的なPyObject型の変数を決して宣言できない。 ただPyObject*型のポインタ変数だけを宣言できる。 唯一の例外は型オブジェクトである。それらは決して 解放されないので、通常は静的なPyTypeObjectオブジェクトである。

全てのPythonオブジェクトは(Pythonの整数でさえ)参照回数を持っている。オブジェクトの型は、それが どの種類のオブジェクト(例えば整数、リストまたはユーザ定義 関数である。Pythonリファレンス マニュアルで説明されているように、もっと多くの種類がある) か決定する。 よく知られた型のそれぞれに対して、あるオブジェクトがその型の であるか調べるためのマクロがある。 例えば、"PyList_Check(a)"は、もし aによって指されたオブジェクトがPythonのリストであれば (そしてその場合にだけ)真である。


Subsections