PyComp / python_doc_md /Advanced /c-api /descriptor.md
ITookAPill's picture
PyComp First Commit
9273228
|
Raw
History Blame Contribute Delete
3.45 kB

A newer version of the Gradio SDK is available: 6.20.0

Upgrade

Descriptor Objects

"Descriptors" are objects that describe some attribute of an object. They are found in the dictionary of type objects.

The type object for member descriptor objects created from PyMemberDef{.interpreted-text role="c:type"} structures. These descriptors expose fields of a C struct as attributes on a type, and correspond to types.MemberDescriptorType{.interpreted-text role="class"} objects in Python.

The type object for get/set descriptor objects created from PyGetSetDef{.interpreted-text role="c:type"} structures. These descriptors implement attributes whose value is computed by C getter and setter functions, and are used for many built-in type attributes.

The type object for method descriptor objects created from PyMethodDef{.interpreted-text role="c:type"} structures. These descriptors expose C functions as methods on a type, and correspond to types.MemberDescriptorType{.interpreted-text role="class"} objects in Python.

The type object for wrapper descriptor objects created by PyDescr_NewWrapper{.interpreted-text role="c:func"} and PyWrapper_New{.interpreted-text role="c:func"}. Wrapper descriptors are used internally to expose special methods implemented via wrapper structures, and appear in Python as types.WrapperDescriptorType{.interpreted-text role="class"} objects.

Return non-zero if the descriptor object descr describes a data attribute, or 0 if it describes a method. descr must be a descriptor object; there is no error checking.

This is a soft deprecated{.interpreted-text role="term"} macro including the common fields for a descriptor object.

This was included in Python's C API by mistake; do not use it in extensions. For creating custom descriptor objects, create a class implementing the descriptor protocol (~PyTypeObject.tp_descr_get{.interpreted-text role="c:member"} and ~PyTypeObject.tp_descr_set{.interpreted-text role="c:member"}).

Built-in descriptors

The type object for property objects. This is the same object as property{.interpreted-text role="class"} in the Python layer.

The type object for super objects. This is the same object as super{.interpreted-text role="class"} in the Python layer.

The type of class method objects. This is the same object as classmethod{.interpreted-text role="class"} in the Python layer.

The type object for C-level class method descriptor objects. This is the type of the descriptors created for classmethod{.interpreted-text role="func"} defined in C extension types, and is the same object as classmethod{.interpreted-text role="class"} in Python.

Create a new classmethod{.interpreted-text role="class"} object wrapping callable. callable must be a callable object and must not be NULL.

On success, this function returns a strong reference{.interpreted-text role="term"} to a new class method descriptor. On failure, this function returns NULL with an exception set.

The type of static method objects. This is the same object as staticmethod{.interpreted-text role="class"} in the Python layer.

Create a new staticmethod{.interpreted-text role="class"} object wrapping callable. callable must be a callable object and must not be NULL.

On success, this function returns a strong reference{.interpreted-text role="term"} to a new static method descriptor. On failure, this function returns NULL with an exception set.