Python's default memory allocation mechanism to allocate a new instance and
initialize all its contents to ``NULL``.
+
.. c:function:: PyObject* PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)
Generic handler for the :c:member:`~PyTypeObject.tp_new` slot of a type object. Create a
new instance using the type's :c:member:`~PyTypeObject.tp_alloc` slot.
+
.. c:function:: int PyType_Ready(PyTypeObject *type)
Finalize a type object. This should be called on all type objects to finish
GC protocol itself by at least implementing the
:c:member:`~PyTypeObject.tp_traverse` handle.
+
.. c:function:: PyObject* PyType_GetName(PyTypeObject *type)
Return the type's name. Equivalent to getting the type's
.. versionadded:: 3.11
+
.. c:function:: PyObject* PyType_GetQualName(PyTypeObject *type)
Return the type's qualified name. Equivalent to getting the
.. versionadded:: 3.13
+
.. c:function:: PyObject* PyType_GetModuleName(PyTypeObject *type)
Return the type's module name. Equivalent to getting the
.. versionadded:: 3.13
+
.. c:function:: void* PyType_GetSlot(PyTypeObject *type, int slot)
Return the function pointer stored in the given slot. If the
:c:func:`PyType_GetSlot` can now accept all types.
Previously, it was limited to :ref:`heap types <heap-types>`.
+
.. c:function:: PyObject* PyType_GetModule(PyTypeObject *type)
Return the module object associated with the given type when the type was
.. versionadded:: 3.9
+
.. c:function:: void* PyType_GetModuleState(PyTypeObject *type)
Return the state of the module object associated with the given type.
.. versionadded:: 3.9
+
.. c:function:: PyObject* PyType_GetModuleByDef(PyTypeObject *type, struct PyModuleDef *def)
Find the first superclass whose module was created from
.. versionadded:: 3.11
+
.. c:function:: int PyUnstable_Type_AssignVersionTag(PyTypeObject *type)
Attempt to assign a version tag to the given type.
.. versionadded:: 3.12
+.. c:function:: int PyType_SUPPORTS_WEAKREFS(PyTypeObject *type)
+
+ Return true if instances of *type* support creating weak references, false
+ otherwise. This function always succeeds. *type* must not be ``NULL``.
+
+ .. seealso::
+ * :ref:`weakrefobjects`
+ * :py:mod:`weakref`
+
+
Creating Heap-Allocated Types
.............................
.. versionadded:: 3.12
+
.. c:function:: PyObject* PyType_FromModuleAndSpec(PyObject *module, PyType_Spec *spec, PyObject *bases)
Equivalent to ``PyType_FromMetaclass(NULL, module, spec, bases)``.
:c:member:`~PyTypeObject.tp_new` is deprecated and in Python 3.14+ it
will be no longer allowed.
+
.. c:function:: PyObject* PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)
Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, bases)``.
:c:member:`~PyTypeObject.tp_new` is deprecated and in Python 3.14+ it
will be no longer allowed.
+
.. c:function:: PyObject* PyType_FromSpec(PyType_Spec *spec)
Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, NULL)``.
weakly referenceable object, or if *callback* is not callable, ``None``, or
``NULL``, this will return ``NULL`` and raise :exc:`TypeError`.
+ .. seealso::
+ :c:func:`PyType_SUPPORTS_WEAKREFS` for checking if *ob* is weakly
+ referenceable.
+
.. c:function:: PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
is not a weakly referenceable object, or if *callback* is not callable,
``None``, or ``NULL``, this will return ``NULL`` and raise :exc:`TypeError`.
+ .. seealso::
+ :c:func:`PyType_SUPPORTS_WEAKREFS` for checking if *ob* is weakly
+ referenceable.
+
.. c:function:: int PyWeakref_GetRef(PyObject *ref, PyObject **pobj)