Type Objects

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()

清除内部查找缓存。返回当前版本标签。

long PyType_GetFlags(PyTypeObject* type)

Return the tp_flags member of type. 此函数主要用于Py_LIMITED_API;各个标志位保证在Python版本之间是稳定的,但访问tp_flags本身不是受限API的一部分。

版本3.2中的新功能。

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中的新功能。