Type Objects¶
-
type PyTypeObject¶
- Part of the Limited API (as an opaque struct).
The C structure of the objects used to describe built-in types.
-
PyTypeObject PyType_Type¶
- Part of the Stable ABI.
This is the type object for type objects; it is the same object as
typein the Python layer.
-
int PyType_Check(PyObject *o)¶
Return non-zero if the object o is a type object, including instances of types derived from the standard type object. Return 0 in all other cases. This function always succeeds.
-
int PyType_CheckExact(PyObject *o)¶
Return non-zero if the object o is a type object, but not a subtype of the standard type object. Return 0 in all other cases. This function always succeeds.
-
unsigned int PyType_ClearCache()¶
- Part of the Stable ABI.
Clear the internal lookup cache. Return the current version tag.
-
unsigned long PyType_GetFlags(PyTypeObject *type)¶
- Part of the Stable ABI.
Return the
tp_flagsmember of type. This function is primarily meant for use withPy_LIMITED_API; the individual flag bits are guaranteed to be stable across Python releases, but access totp_flagsitself is not part of the limited API.Added in version 3.2.
Changed in version 3.4: The return type is now
unsigned longrather thanlong.
-
PyObject *PyType_GetDict(PyTypeObject *type)¶
Return the type object’s internal namespace, which is otherwise only exposed via a read-only proxy (
cls.__dict__). This is a replacement for accessingtp_dictdirectly. The returned dictionary must be treated as read-only.This function is meant for specific embedding and language-binding cases, where direct access to the dict is necessary and indirect access (e.g. via the proxy or
PyObject_GetAttr()) isn’t adequate.Extension modules should continue to use
tp_dict, directly or indirectly, when setting up their own types.Added in version 3.12.
-
void PyType_Modified(PyTypeObject *type)¶
- Part of the Stable ABI.
Invalidate the internal lookup cache for the type and all of its subtypes. This function must be called after any manual modification of the attributes or base classes of the type.
-
int PyType_AddWatcher(PyType_WatchCallback callback)¶
Register callback as a type watcher. Return a non-negative integer ID which must be passed to future calls to
PyType_Watch(). In case of error (e.g. no more watcher IDs available), return-1and set an exception.In free-threaded builds,
PyType_AddWatcher()is not thread-safe, so it must be called at start up (before spawning the first thread).Added in version 3.12.
-
int PyType_ClearWatcher(int watcher_id)¶
Clear watcher identified by watcher_id (previously returned from
PyType_AddWatcher()). Return0on success,-1on error (e.g. if watcher_id was never registered.)An extension should never call
PyType_ClearWatcherwith a watcher_id that was not returned to it by a previous call toPyType_AddWatcher().Added in version 3.12.
-
int PyType_Watch(int watcher_id, PyObject *type)¶
Mark type as watched. The callback granted watcher_id by
PyType_AddWatcher()will be called wheneverPyType_Modified()reports a change to type. (The callback may be called only once for a series of consecutive modifications to type, if_PyType_Lookup()is not called on type between the modifications; this is an implementation detail and subject to change.)An extension should never call
PyType_Watchwith a watcher_id that was not returned to it by a previous call toPyType_AddWatcher().Added in version 3.12.
-
int PyType_Unwatch(int watcher_id, PyObject *type)¶
Mark type as not watched. This undoes a previous call to
PyType_Watch(). type must not beNULL.An extension should never call this function with a watcher_id that was not returned to it by a previous call to
PyType_AddWatcher().On success, this function returns
0. On failure, this function returns-1with an exception set.Added in version 3.12.
-
typedef int (*PyType_WatchCallback)(PyObject *type)¶
Type of a type-watcher callback function.
The callback must not modify type or cause
PyType_Modified()to be called on type or any type in its MRO; violating this rule could cause infinite recursion.Added in version 3.12.
-
int PyType_HasFeature(PyTypeObject *o, int feature)¶
Return non-zero if the type object o sets the feature feature. Type features are denoted by single bit flags.
-
int PyType_FastSubclass(PyTypeObject *type, int flag)¶
Return non-zero if the type object type sets the subclass flag flag. Subclass flags are denoted by
Py_TPFLAGS_*_SUBCLASS. This function is used by many_Checkfunctions for common types.See also
PyObject_TypeCheck(), which is used as a slower alternative in_Checkfunctions for types that don’t come with subclass flags.
- int PyType_IS_GC(PyTypeObject