タイプオブジェクト—Pythonドキュメント

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

タイプオブジェクト

type PyTypeObject
組み込み型を記述するために使用されるオブジェクトのC構造体。
PyObject *PyType_Type
これは、型オブジェクトの型オブジェクトです。 Pythonレイヤーの type と同じオブジェクトです。
int PyType_Check(PyObject *o)
オブジェクト o が型オブジェクトである場合、trueを返します。これには、標準の型オブジェクトから派生した型のインスタンスが含まれます。 それ以外の場合はすべてfalseを返します。
int PyType_CheckExact(PyObject *o)
オブジェクト o が型オブジェクトであるが、標準型オブジェクトのサブタイプではない場合はtrueを返します。 それ以外の場合はすべてfalseを返します。
unsigned int PyType_ClearCache()
内部ルックアップキャッシュをクリアします。 現在のバージョンタグを返します。
unsigned long PyType_GetFlags(PyTypeObject *type)

typetp_flags メンバーを返します。 この関数は、主に Py_LIMITED_API で使用することを目的としています。 個々のフラグビットはPythonリリース間で安定していることが保証されていますが、 tp_flags 自体へのアクセスは制限付きAPIの一部ではありません。

バージョン3.2の新機能。

バージョン3.4で変更:戻りタイプがlongではなくunsigned longになりました。

void PyType_Modified(PyTypeObject *type)
タイプとそのすべてのサブタイプの内部ルックアップキャッシュを無効にします。 この関数は、タイプの属性または基本クラスを手動で変更した後に呼び出す必要があります。
int PyType_HasFeature(PyTypeObject *o, int feature)
タイプオブジェクト o が機能機能を設定する場合はtrueを返します。 タイプ機能は、シングルビットフラグで示されます。
int PyType_IS_GC(PyTypeObject *o)
タイプオブジェクトに循環検出器のサポートが含まれている場合はtrueを返します。 これは、タイプフラグ Py_TPFLAGS_HAVE_GC をテストします。
int PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)

ab のサブタイプである場合はtrueを返します。

この関数は実際のサブタイプのみをチェックします。つまり、 __ subclasscheck __()b では呼び出されません。 PyObject_IsSubclass()を呼び出して、 issubclass()と同じチェックを行います。

PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
型オブジェクトの tp_alloc スロットのジェネリックハンドラー。 Pythonのデフォルトのメモリ割り当てメカニズムを使用して、新しいインスタンスを割り当て、そのすべてのコンテンツをNULLに初期化します。
PyObject *PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)
型オブジェクトの tp_new スロットのジェネリックハンドラー。 タイプの tp_alloc スロットを使用して新しいインスタンスを作成します。
int PyType_Ready(PyTypeObject *type)
型オブジェクトを完成させます。 これは、初期化を完了するためにすべての型オブジェクトで呼び出す必要があります。 この関数は、型の基本クラスから継承されたスロットを追加する役割を果たします。 成功した場合は0を返すか、-1を返してエラーの場合は例外を設定します。
PyObject *PyType_FromSpec(PyType_Spec *spec)
関数に渡された spec からヒープタイプオブジェクトを作成して返します。
PyObject *PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)

spec からヒープタイプオブジェクトを作成して返します。 それに加えて、作成されたヒープタイプには、 bases タプルに含まれるすべてのタイプがベースタイプとして含まれています。 これにより、呼び出し元は他のヒープタイプを基本タイプとして参照できます。

バージョン3.3の新機能。

void *PyType_GetSlot(PyTypeObject *type, int slot)

指定されたスロットに格納されている関数ポインタを返します。 結果がNULLの場合、これは、スロットがNULLであるか、関数が無効なパラメーターで呼び出されたことを示しています。 呼び出し元は通常、結果ポインターを適切な関数型にキャストします。

バージョン3.4の新機能。