タプルオブジェクト
- type PyTupleObject
- PyObject のこのサブタイプは、Pythonタプルオブジェクトを表します。
- PyTypeObject PyTuple_Type
- PyTypeObject のこのインスタンスは、Pythonタプルタイプを表します。 Pythonレイヤーの tuple と同じオブジェクトです。
- int PyTuple_Check(PyObject *p)
- p がタプルオブジェクトまたはタプルタイプのサブタイプのインスタンスである場合、trueを返します。 この関数は常に成功します。
- int PyTuple_CheckExact(PyObject *p)
- p がタプルオブジェクトであるが、タプルタイプのサブタイプのインスタンスではない場合はtrueを返します。 この関数は常に成功します。
- PyObject *PyTuple_New(Py_ssize_t len)
- 失敗した場合は、サイズ len または
NULL
の新しいタプルオブジェクトを返します。
- PyObject *PyTuple_Pack(Py_ssize_t n, ...)
- 失敗した場合は、サイズ n または
NULL
の新しいタプルオブジェクトを返します。 タプル値は、Pythonオブジェクトを指す後続の n C引数に初期化されます。PyTuple_Pack(2, a, b)
はPy_BuildValue("(OO)", a, b)
と同等です。
- Py_ssize_t PyTuple_Size(PyObject *p)
- タプルオブジェクトへのポインタを取り、そのタプルのサイズを返します。
- Py_ssize_t PyTuple_GET_SIZE(PyObject *p)
- タプル p のサイズを返します。これは
NULL
以外であり、タプルを指している必要があります。 エラーチェックは実行されません。
- p が指すタプルの位置 pos にあるオブジェクトを返します。 pos が負または範囲外の場合は、
NULL
を返し、 IndexError 例外を設定します。
- PyTuple_GetItem()と同様ですが、引数のチェックは行いません。
- p が指すタプルのスライスを low と high の間で返すか、失敗した場合は
NULL
を返します。 これは、Python式p[low:high]
と同等です。 リストの最後からの索引付けはサポートされていません。
- int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
p が指すタプルの位置 pos にオブジェクト o への参照を挿入します。 成功した場合は
0
を返します。 pos が範囲外の場合は、-1
を返し、 IndexError 例外を設定します。ノート
この関数は、 o への参照を「盗み」、影響を受ける位置のタプルにすでにあるアイテムへの参照を破棄します。
- void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)
PyTuple_SetItem()と同様ですが、エラーチェックを行わないため、のみを使用して新しいタプルを入力する必要があります。
ノート
このマクロは o への参照を「盗み」、 PyTuple_SetItem()とは異なり、は置き換えられるアイテムへの参照を破棄しません。 pos の位置にあるタプル内の参照がリークされます。
- int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)
- タプルのサイズを変更するために使用できます。 newsize は、タプルの新しい長さになります。 タプルは不変であると想定されているため、これはオブジェクトへの参照が1つしかない場合にのみ使用する必要があります。 タプルがコードの他の部分にすでに認識されている可能性がある場合は、これを使用しないでください。 タプルは常に最後に拡大または縮小します。 これは、古いタプルを破壊して新しいタプルを作成することと考えてください。より効率的になります。 成功すると
0
を返します。 クライアントコードは、*p
の結果の値がこの関数を呼び出す前と同じになると想定してはなりません。*p
で参照されているオブジェクトを置き換えると、元の*p
は破棄されます。 失敗すると、-1
を返し、*p
をNULL
に設定し、 MemoryError または SystemError を発生させます。
構造体シーケンスオブジェクト
構造体シーケンスオブジェクトは、 namedtuple()オブジェクトと同等のCです。 属性を介してアイテムにアクセスできるシーケンス。 構造体シーケンスを作成するには、最初に特定の構造体シーケンスタイプを作成する必要があります。
- PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
- 以下に説明する desc のデータから新しい構造体シーケンスタイプを作成します。 結果のタイプのインスタンスは、 PyStructSequence_New()を使用して作成できます。
- void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)
- desc から構造体シーケンスタイプ type を所定の位置に初期化します。
- int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)
PyStructSequence_InitType
と同じですが、成功すると0
を返し、失敗すると-1
を返します。バージョン3.4の新機能。
- type PyStructSequence_Desc
作成する構造体シーケンスタイプのメタ情報が含まれます。
分野
Cタイプ
意味
name
const char *
構造体シーケンスタイプの名前
doc
const char *
タイプのdocstringへのポインタまたは
NULL
を省略しますfields
PyStructSequence_Field *
NULL
へのポインタ-新しいタイプのフィールド名を持つ終了配列n_in_sequence
int
Python側に表示されるフィールドの数(タプルとして使用される場合)
- type PyStructSequence_Field
構造体シーケンスのフィールドについて説明します。 構造体シーケンスはタプルとしてモデル化されるため、すべてのフィールドは PyObject * として入力されます。 PyStructSequence_Desc の
fields
配列のインデックスによって、構造体シーケンスのどのフィールドが記述されるかが決まります。分野
Cタイプ
意味
name
const char *
フィールドの名前または
NULL
で名前付きフィールドのリストを終了し、 PyStructSequence_UnnamedField に設定して名前なしのままにしますdoc
const char *
フィールドdocstringまたは
NULL
を省略します
- const char *const PyStructSequence_UnnamedField
名前を付けないままにするためのフィールド名の特別な値。
バージョン3.9で変更:タイプが
char *
から変更されました。
- PyObject *PyStructSequence_New(PyTypeObject *type)
- type のインスタンスを作成します。これは、 PyStructSequence_NewType()で作成されている必要があります。
- p が指す構造体シーケンスの位置 pos にあるオブジェクトを返します。 境界チェックは実行されません。
- PyStructSequence_GetItem()と同等のマクロ。
- void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
構造体シーケンス p のインデックス pos のフィールドを値 o に設定します。 PyTuple_SET_ITEM()と同様に、これは新しいインスタンスを入力するためにのみ使用する必要があります。
ノート
この関数は、 o への参照を「盗みます」。
- void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)
PyStructSequence_SetItem()と同等のマクロ。
ノート
この関数は、 o への参照を「盗みます」。