オブジェクトの設定—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.9/c-api/set
移動先:案内検索

オブジェクトの設定

このセクションでは、 set および frozenset オブジェクトのパブリックAPIについて詳しく説明します。 以下にリストされていない機能には、抽象オブジェクトプロトコル( PyObject_CallMethod()PyObject_RichCompareBool()PyObject_Hash()を含む)のいずれかを使用してアクセスするのが最適です。 PyObject_Repr()PyObject_IsTrue()PyObject_Print()、および PyObject_GetIter())または抽象番号プロトコル( PyNumber_And(を含む) )PyNumber_Subtract()PyNumber_Or()PyNumber_Xor()PyNumber_InPlaceAnd()PyNumber_InPlaceSubtract )PyNumber_InPlaceOr()、および PyNumber_InPlaceXor())。

type PySetObject
PyObject のこのサブタイプは、 set オブジェクトと frozenset オブジェクトの両方の内部データを保持するために使用されます。 PyDictObject に似ており、小さなセット(タプルストレージのように)の固定サイズであり、中規模および大サイズのセット(リストストレージのように)用の個別の可変サイズのメモリブロックを指します。 )。 この構造のどのフィールドも公開されていると見なされるべきではなく、変更される可能性があります。 すべてのアクセスは、構造内の値を操作するのではなく、文書化されたAPIを介して行う必要があります。
PyTypeObject PySet_Type
これは、Python set タイプを表す PyTypeObject のインスタンスです。
PyTypeObject PyFrozenSet_Type
これは、Python 凍結セットタイプを表す PyTypeObject のインスタンスです。

次の型チェックマクロは、任意のPythonオブジェクトへのポインターで機能します。 同様に、コンストラクター関数は、反復可能なPythonオブジェクトで機能します。

int PySet_Check(PyObject *p)
pset オブジェクトまたはサブタイプのインスタンスである場合はtrueを返します。 この関数は常に成功します。
int PyFrozenSet_Check(PyObject *p)
pfrozenset オブジェクトまたはサブタイプのインスタンスである場合はtrueを返します。 この関数は常に成功します。
int PyAnySet_Check(PyObject *p)
pset オブジェクト、 frozenset オブジェクト、またはサブタイプのインスタンスである場合、trueを返します。 この関数は常に成功します。
int PyAnySet_CheckExact(PyObject *p)
pset オブジェクトまたは frozenset オブジェクトであるが、サブタイプのインスタンスではない場合はtrueを返します。 この関数は常に成功します。
int PyFrozenSet_CheckExact(PyObject *p)
pfrozenset オブジェクトであるが、サブタイプのインスタンスではない場合はtrueを返します。 この関数は常に成功します。
PyObject *PySet_New(PyObject *iterable)
iterable によって返されたオブジェクトを含む新しい set を返します。 iterableNULLで、新しい空のセットを作成できます。 成功した場合は新しいセットを返し、失敗した場合はNULLを返します。 iterable が実際に反復可能でない場合は、 TypeError を発生させます。 コンストラクターは、セット(c=set(s))のコピーにも役立ちます。
PyObject *PyFrozenSet_New(PyObject *iterable)
iterable によって返されたオブジェクトを含む新しい frozenset を返します。 iterable は、NULLで、新しい空のフリーズセットを作成できます。 成功した場合は新しいセットを返し、失敗した場合はNULLを返します。 iterable が実際に反復可能でない場合は、 TypeError を発生させます。

set または frozenset のインスタンス、またはそれらのサブタイプのインスタンスでは、次の関数とマクロを使用できます。

Py_ssize_t PySet_Size(PyObject *anyset)
set または frozenset オブジェクトの長さを返します。 len(anyset)と同等です。 anysetsetfrozenset 、またはサブタイプのインスタンスでない場合、PyExc_SystemErrorを発生させます。
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)
エラーチェックなしの PySet_Size()のマクロ形式。
int PySet_Contains(PyObject *anyset, PyObject *key)
見つかった場合は1を返し、見つからなかった場合は0を返し、エラーが発生した場合は-1を返します。 Python __contains__()メソッドとは異なり、この関数はハッシュ不可能なセットを一時的なフリーズセットに自動的に変換しません。 キーがハッシュできない場合は、 TypeError を発生させます。 anysetsetfrozenset 、またはサブタイプのインスタンスでない場合は、PyExc_SystemErrorを上げます。
int PySet_Add(PyObject *set, PyObject *key)
キーセットインスタンスに追加します。 フリーズセットインスタンスでも機能します( PyTuple_SetItem()のように、他のコードに公開される前に、新しいフリーズセットの値を入力するために使用できます)。 成功した場合は0を返し、失敗した場合は-1を返します。 キーがハッシュできない場合は、 TypeError を発生させます。 拡大する余地がない場合は、 MemoryError を発生させます。 setset またはそのサブタイプのインスタンスでない場合は、 SystemError を発生させます。

次の関数は、 set またはそのサブタイプのインスタンスで使用できますが、 frozenset またはそのサブタイプのインスタンスでは使用できません。

int PySet_Discard(PyObject *set, PyObject *key)
見つかって削除された場合は1を返し、見つからなかった場合(アクションは実行されない)は0を返し、エラーが発生した場合は-1を返します。 欠落しているキーに対して KeyError を発生させません。 キーがハッシュできない場合は、 TypeError を発生させます。 Python discard()メソッドとは異なり、この関数はハッシュ不可能なセットを一時的なフリーズセットに自動的に変換しません。 setset またはそのサブタイプのインスタンスでない場合は、PyExc_SystemErrorを上げます。
PyObject *PySet_Pop(PyObject *set)
set 内の任意のオブジェクトへの新しい参照を返し、 set からオブジェクトを削除します。 失敗した場合はNULLを返します。 セットが空の場合は、 KeyError を発生させます。 setset またはそのサブタイプのインスタンスでない場合は、 SystemError を発生させます。
int PySet_Clear(PyObject *set)
すべての要素の既存のセットを空にします。