セルオブジェクト (cell object)

"セル (cell)" オブジェクトは、複数のスコープから参照される変数群を実装するために使われます。セルは各変数について作成され、各々の値を記憶します; この値を参照する各スタックフレームにおけるローカル変数には、そのスタックフレームの外側で同じ値を参照しているセルに対する参照が入ります。セルで表現された値にアクセスすると、セルオブジェクト自体の代わりにセル内の値が使われます。このセルオブジェクトを使った間接参照 (dereference) は、インタプリタによって生成されたバイトコード内でサポートされている必要があります; セルオブジェクトにアクセスした際に、自動的に間接参照は起こりません。上記以外の状況では、セルオブジェクトは役に立たないはずです。

type PyCellObject

セルオブジェクトに使われる C 構造体です。

PyTypeObject PyCell_Type

セルオブジェクトに対応する型オブジェクトです。

int PyCell_Check(ob)

Return true if ob is a cell object; ob must not be NULL. This function always succeeds.

PyObject *PyCell_New(PyObject *ob)
Return value: New reference.

ob の入った新たなセルオブジェクトを生成して返します。 引数を NULL にしてもかまいません。

PyObject *PyCell_Get(PyObject *cell)
Return value: New reference.

cell の内容を返します。

PyObject *PyCell_GET(PyObject *cell)
Return value: Borrowed reference.

cell の内容を返しますが、cell が非 NULL かつセルオブジェクトであるかどうかはチェックしません。

int PyCell_Set(PyObject *cell, PyObject *value)

セルオブジェクト cell の内容を value に設定します。 この関数は現在のセルの全ての内容に対する参照を解放します。 valueNULL でもかまいません。 cell は非 NULL でなければなりません。cell がセルオブジェクトでない場合、-1 を返します。 成功すると 0 を返します。

void PyCell_SET(PyObject *cell, PyObject *value)

セルオブジェクト cell の値を value に設定します。 参照カウントに対する変更はなく、安全のためのチェックは何も行いません。cell は非 NULL でなければならず、かつセルオブジェクトでなければなりません。