型オブジェクト¶
-
PyTypeObject¶ 組み込み型を記述する際に用いられる、オブジェクトを表す C 構造体です。
-
int
PyType_Check(PyObject *o)¶ オブジェクト o が型オブジェクトの場合に真を返します。標準型オブジェクトから派生したサブタイプのインスタンスも含みます。その他の場合には偽を返します。
-
unsigned int
PyType_ClearCache()¶ 内部の検索キャッシュをクリアします。現在のバージョンタグを返します。
-
unsigned long
PyType_GetFlags(PyTypeObject* type)¶ type のメンバーである
tp_flagsを返します。この関数は基本的に Py_LIMITED_API を定義して使うことを想定しています。それぞれのフラグはpythonの異なるリリースで安定していることが保証されていますが、tp_flags自体は限定されたAPIの一部ではありません。バージョン 3.2 で追加.
バージョン 3.4 で変更: 返り値の型が
longではなくunsigned longになりました。
-
void
PyType_Modified(PyTypeObject *type)¶ 内部の検索キャッシュを、その type とすべてのサブタイプに対して無効にします。この関数は type の属性や基底クラス列を変更したあとに手動で呼び出さなければなりません。
-
int
PyType_HasFeature(PyTypeObject *o, int feature)¶ 型オブジェクト o に、型機能 feature が設定されている場合に真を返します。型機能は各々単一ビットのフラグで表されます。
-
int
PyType_IS_GC(PyTypeObject *o)¶ 型オブジェクトが o が循環参照検出をサポートしている場合に真を返します; この関数は型機能フラグ
Py_TPFLAGS_HAVE_GCの設定状態をチェックします。
-
int
PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)¶ a が b のサブタイプの場合に真を返します。
この関数は実際のサブクラスをチェックするだけです。つまり、
__subclasscheck__()は b に対し呼ばれません。issubclass()と同じチェックをするにはPyObject_IsSubclass()を呼んでください。
-
PyObject*
PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)¶ - Return value: New reference.
型オブジェクトの
tp_allocに対するジェネリックハンドラです。 Python のデフォルトのメモリアロケートメカニズムを使って新しいインスタンスをアロケートし、すべての内容をNULLで初期化します。
-
PyObject*
PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)¶ - Return value: New reference.
型オブジェクトの
tp_newに対するジェネリックハンドラです。型のtp_allocスロットを使って新しいインスタンスを作成します。
-
int
PyType_Ready(PyTypeObject *type)¶ 型オブジェクトのファイナライズを行います。この関数は全てのオブジェクトで初期化を完了するために呼び出されなくてはなりません。この関数は、基底クラス型から継承したスロットを型オブジェクトに追加する役割があります。成功した場合には
0を返し、エラーの場合には-1を返して例外情報を設定します。
-
void*
PyType_GetSlot(PyTypeObject *type, int slot)¶ 与えられたスロットに格納されている関数ポインタを返します。返り値が
NULLの場合は、スロットがNULLか、関数が不正な引数で呼ばれたことを示します。通常、呼び出し側は返り値のポインタを適切な関数型にキャストします。See
PyType_Slot.slotfor possible values of the slot argument.An exception is raised if type is not a heap type.
バージョン 3.4 で追加.
Creating Heap-Allocated Types¶
The following functions and structs are used to create heap types.
-
PyObject*
PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)¶ - Return value: New reference.
Creates and returns a heap type object from the spec (
Py_TPFLAGS_HEAPTYPE).If bases is a tuple, the created heap type contains all types contained in it as base types.
If bases is
NULL, the Py_tp_bases slot is used instead. If that also isNULL, the Py_tp_base slot is used instead. If that also isNULL, the new type derives fromobject.This function calls
PyType_Ready()on the new type.バージョン 3.3 で追加.
-
PyObject*
PyType_FromSpec(PyType_Spec *spec)¶ - Return value: New reference.
Equivalent to
PyType_FromSpecWithBases(spec, NULL).
-
PyType_Spec¶ Structure defining a type's behavior.
-
const char*
PyType_Spec.name¶ Name of the type, used to set
PyTypeObject.tp_name.
-
int
PyType_Spec.basicsize¶
-
int
PyType_Spec.itemsize¶ Size of the instance in bytes, used to set
PyTypeObject.tp_basicsizeandPyTypeObject.tp_itemsize.
-
int
PyType_Spec.flags¶ Type flags, used to set
PyTypeObject.tp_flags.If the
Py_TPFLAGS_HEAPTYPEflag is not set,PyType_FromSpecWithBases()sets it automatically.
-
PyType_Slot *
PyType_Spec.slots¶ Array of
PyType_Slotstructures. Terminated by the special slot value{0, NULL}.
-
const char*
-
PyType_Slot¶ Structure defining optional functionality of a type, containing a slot ID and a value pointer.
-
int
PyType_Slot.slot¶ A slot ID.
Slot IDs are named like the field names of the structures
PyTypeObject,PyNumberMethods,PySequenceMethods,PyMappingMethodsandPyAsyncMethodswith an addedPy_prefix. For example, use:Py_tp_deallocto setPyTypeObject.tp_deallocPy_nb_addto setPyNumberMethods.nb_addPy_sq_lengthto setPySequenceMethods.sq_length
The following fields cannot be set using
PyType_SpecandPyType_Slot:tp_print
Setting
Py_tp_basesorPy_tp_basemay be problematic on some platforms. To avoid issues, use the bases argument ofPyType_FromSpecWithBases()instead.
-
void *
PyType_Slot.pfunc¶ The desired value of the slot. In most cases, this is a pointer to a function.
May not be
NULL.
-
int