> **Источник:** https://python-all.ru/3.13/c-api/descriptor.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

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

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

#### `PyTypeObject PyProperty_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

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

#### `PyObject *PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

#### `PyObject *PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *meth)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

#### `PyTypeObject PyMemberDescr_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Объект типа для объектов дескрипторов элементов, созданных из структур [`PyMemberDef`](https://python-all.ru/3.13/c-api/structures.html#c.PyMemberDef). Эти дескрипторы предоставляют поля C-структуры как атрибуты типа и соответствуют объектам [`types.MemberDescriptorType`](https://python-all.ru/3.13/library/types.html#types.MemberDescriptorType) в Python.

#### `PyTypeObject PyGetSetDescr_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Объект типа для дескрипторов get/set, создаваемых из структур [`PyGetSetDef`](https://python-all.ru/3.13/c-api/structures.html#c.PyGetSetDef). Эти дескрипторы реализуют атрибуты, значение которых вычисляется функциями getter и setter на C, и используются для многих атрибутов встроенных типов.

#### `PyObject *PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

#### `PyTypeObject PyMethodDescr_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Объект типа для объектов дескрипторов методов, созданных из структур [`PyMethodDef`](https://python-all.ru/3.13/c-api/structures.html#c.PyMethodDef). Эти дескрипторы предоставляют C-функции как методы типа и соответствуют объектам [`types.MemberDescriptorType`](https://python-all.ru/3.13/library/types.html#types.MemberDescriptorType) в Python.

#### `PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *wrapper, void *wrapped)`

*Возвращаемое значение: новая ссылка.*

#### `PyTypeObject PyWrapperDescr_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Объект типа для объектов дескрипторов-обёрток, создаваемых [`PyDescr_NewWrapper()`](https://python-all.ru/3.13/c-api/descriptor.html#c.PyDescr_NewWrapper) и [`PyWrapper_New()`](https://python-all.ru/3.13/c-api/descriptor.html#c.PyWrapper_New). Дескрипторы-обёртки используются внутри для предоставления специальных методов, реализованных через структуры-обёртки, и в Python представляются объектами [`types.WrapperDescriptorType`](https://python-all.ru/3.13/library/types.html#types.WrapperDescriptorType).

#### `PyObject *PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

#### `int PyDescr_IsData(PyObject *descr)`

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

#### `PyObject *PyWrapper_New(PyObject*, PyObject*)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

## Встроенные дескрипторы

#### `PyTypeObject PySuper_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Объект типа для объектов super. Это тот же объект, что и [`super`](https://python-all.ru/3.13/library/functions.html#super) в слое Python.

#### `PyTypeObject PyClassMethod_Type`

Тип объектов методов класса. Это тот же объект, что и [`classmethod`](https://python-all.ru/3.13/library/functions.html#classmethod) в слое Python.

#### `PyTypeObject PyClassMethodDescr_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Объект типа для дескрипторов методов класса на уровне C. Это тип дескрипторов, создаваемых для [`classmethod()`](https://python-all.ru/3.13/library/functions.html#classmethod), определённых в C-расширениях типов, и это тот же объект, что и [`classmethod`](https://python-all.ru/3.13/library/functions.html#classmethod) в Python.

#### `PyObject *PyClassMethod_New(PyObject *callable)`

Создаёт новый объект [`classmethod`](https://python-all.ru/3.13/library/functions.html#classmethod), оборачивающий *callable*. *callable* должен быть вызываемым объектом и не должен быть `NULL`.

В случае успеха эта функция возвращает [сильную ссылку](https://python-all.ru/3.13/glossary.html#term-strong-reference) на новый дескриптор метода класса. При неудаче возвращает `NULL` с установленным исключением.

#### `PyTypeObject PyStaticMethod_Type`

Тип объектов статических методов. Это тот же объект, что и [`staticmethod`](https://python-all.ru/3.13/library/functions.html#staticmethod) в слое Python.

#### `PyObject *PyStaticMethod_New(PyObject *callable)`

Создаёт новый объект [`staticmethod`](https://python-all.ru/3.13/library/functions.html#staticmethod), оборачивающий *callable*. *callable* должен быть вызываемым объектом и не должен быть `NULL`.

В случае успеха эта функция возвращает [сильную ссылку](https://python-all.ru/3.13/glossary.html#term-strong-reference) на новый дескриптор статического метода. При неудаче возвращает `NULL` с установленным исключением.
