バージョン 2.5 で追加.
このセクションでは set と frozenset の公開APIについて詳しく述べます。 以降で説明していない機能は、抽象オブジェクトプロトコル ( PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(), PyObject_GetIter() を含む) か抽象数値プロトコル ( PyNumber_Add(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAdd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr(), PyNumber_InPlaceXor() を含む) を使って利用できます。
この PyObject を継承した型は、 set と frozenset 両方の 内部データを保存するのに用いられます。 PyDictObject と同じように、小さい集合(set)に対しては(タプルのように)固定サイズであり、 そうでない集合に対しては(リストと同じように)可変長のメモリブロックを用います。この構造体のどのフィールドも、非公開で変更される可能性があると考えて下さい。 すべてのアクセスは、構造体の中の値を直接操作するのではなく、ドキュメントされた APIを用いて行うべきです。
この PyTypeObject のインスタンスは、Pythonの set 型を表します。
この PyTypeObject のインスタンスは、Pythonの frozenset 型を表します。
以降の型チェックマクロはすべてのPythonオブジェクトに対するポインタに対して動作します。 同様に、コンストラクタはすべてのイテレート可能なPythonオブジェクトに対して動作します。
p が set か frozenset のどちらかのオブジェクトであるときに true を返します。 サブタイプのオブジェクトは含みません。
iterable が返すオブジェクトを含む新しい set を返します。 iterable が NULL のときは、空のsetを返します。成功したら新しいsetを、失敗したら NULL を返します。 iterable がイテレート可能で無い場合は、 TypeError を送出します。このコンストラクタは set をコピーするときにも使えます。 (c=set(s))
iterable が返すオブジェクトを含む新しい frozenset を返します。 iterable が NULL のときは、空のfrozensetを返します。 iterable がイテレート可能で無い場合は、 TypeError を送出します。
バージョン 2.6 で変更: 完全に新しい frozenset オブジェクトを返すことが保証されるように なりました。以前は、大きさがゼロの frozenset はシングルトンでした。 これは新しい frozenset を PySet_Add() を使って作成するためです。
以降の関数やマクロは、 set と frozenset とそのサブタイプのインスタンスに対して利用できます。
set や frozenset のオブジェクトの長さを返します。 len(anyset) と同じです。 anyset が set 、 frozenset 及びそのサブタイプのオブジェクトで 無い場合は、 PyExc_SystemError を送出します。
バージョン 2.5 で変更: これらの関数は以前は int を返していました。 この変更により、 64bit システムを正しくサポートするには修正が必要になります。
エラーチェックを行わない、 PySet_Size() のマクロ形式。
見つかったら1を、見つからなかったら0を、エラーが発生したときは-1を返します。 Pythonの __contains__() メソッドと違って、この関数は非ハッシュsetを一時frozensetに自動で変換しません。 key がハッシュ可能で無い場合、 TypeError を送出します。 anyset が set, frozenset 及びそのサブタイプのオブジェクトで無い場合は PyExc_SystemError を送出します。
set のインスタンスに key を追加します。 frozenset のインスタンスに使わないで下さい。 成功したら0を、失敗したら-1を返します。 key がハッシュ可能でないなら、 TypeError を送出します。 setを大きくする余裕が無い場合は、 MemoryError を送出します。 set が set とそのサブタイプのインスタンスで無い場合は、 SystemError を送出します。
バージョン 2.6 で変更: frozenset やそのサブタイプのインスタンスに対して利用できる ようになりました。 PyTuple_SetItem() のように、新しい frozenset を他のコードに渡す まえに内容を追加するためのに使うことができます。
以降の関数は、 set とそのサブタイプに対して利用可能です。 frozenset とそのサブタイプには利用できません。
見つかって削除したら1を返します。見つからなかったら何もせずに0を返します。エラーが発生したら-1を返します。 keyが無くても KeyError を送出しません。 key がハッシュ不可能であれば TypeError を送出します。 Pythonの discard() メソッドと違って、この関数は非ハッシュsetsを一時frozensetに変換しません。 set が set とそのサブタイプのインスタンスで無いときは、 PyExc_SystemError を送出します。