Документация Python неофициальный перевод
Содержание страницы

Объекты дескрипторовDescriptor Objects

«Дескрипторы» – это объекты, описывающие некоторый атрибут объекта. Они находятся в словаре объектов типов.

PyTypeObject PyProperty_Type
Часть Stable ABI.

Объект типа для встроенных типов дескрипторов.

PyObject *PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)
Возвращаемое значение: новая ссылка. Часть Stable ABI.
PyObject *PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *meth)
Возвращаемое значение: новая ссылка. Часть Stable ABI.
PyTypeObject PyMemberDescr_Type
Часть Stable ABI.

Объект типа для объектов дескрипторов элементов, созданных из структур PyMemberDef. Эти дескрипторы предоставляют поля C-структуры как атрибуты типа и соответствуют объектам types.MemberDescriptorType в Python.

PyTypeObject PyGetSetDescr_Type
Часть Stable ABI.

Объект типа для дескрипторов get/set, создаваемых из структур PyGetSetDef. Эти дескрипторы реализуют атрибуты, значение которых вычисляется функциями getter и setter на C, и используются для многих атрибутов встроенных типов.

PyObject *PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)
Возвращаемое значение: новая ссылка. Часть Stable ABI.
PyTypeObject PyMethodDescr_Type
Часть Stable ABI.

Объект типа для объектов дескрипторов методов, созданных из структур PyMethodDef. Эти дескрипторы предоставляют C-функции как методы типа и соответствуют объектам types.MemberDescriptorType в Python.

PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *wrapper, void *wrapped)
Возвращаемое значение: новая ссылка.
PyTypeObject PyWrapperDescr_Type
Часть Stable ABI.

Объект типа для объектов дескрипторов-обёрток, создаваемых PyDescr_NewWrapper() и PyWrapper_New(). Дескрипторы-обёртки используются внутри для предоставления специальных методов, реализованных через структуры-обёртки, и в Python представляются объектами types.WrapperDescriptorType.

PyObject *PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)
Возвращаемое значение: новая ссылка. Часть Stable ABI.
int PyDescr_IsData(PyObject *descr)

Возвращает ненулевое значение, если объект-дескриптор descr описывает атрибут данных, или 0, если он описывает метод. descr должен быть объектом-дескриптором; проверка ошибок не выполняется.

PyObject *PyWrapper_New(PyObject*, PyObject*)
Возвращаемое значение: новая ссылка. Часть Stable ABI.

Встроенные дескрипторыBuilt-in descriptors

PyTypeObject PySuper_Type
Часть Stable ABI.

Объект типа для объектов super. Это тот же объект, что и super в слое Python.

PyTypeObject PyClassMethod_Type

Тип объектов методов класса. Это тот же объект, что и classmethod в слое Python.

PyTypeObject PyClassMethodDescr_Type
Часть Stable ABI.

Объект типа для дескрипторов методов класса на уровне C. Это тип дескрипторов, создаваемых для classmethod(), определённых в C-расширениях типов, и это тот же объект, что и classmethod в Python.

PyObject *PyClassMethod_New(PyObject *callable)

Создаёт новый объект classmethod, оборачивающий callable. callable должен быть вызываемым объектом и не должен быть NULL.

В случае успеха эта функция возвращает сильную ссылку на новый дескриптор метода класса. При неудаче возвращает NULL с установленным исключением.

PyTypeObject PyStaticMethod_Type

Тип объектов статических методов. Это тот же объект, что и staticmethod в слое Python.

PyObject *PyStaticMethod_New(PyObject *callable)

Создаёт новый объект staticmethod, оборачивающий callable. callable должен быть вызываемым объектом и не должен быть NULL.

В случае успеха эта функция возвращает сильную ссылку на новый дескриптор статического метода. При неудаче возвращает NULL с установленным исключением.