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

descriptor.md

112 строк · 7.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3/c-api/descriptor.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты дескрипторов89«Дескрипторы» – это объекты, описывающие некоторый атрибут объекта. Они находятся в словаре объектов типов.1011#### `PyTypeObject PyProperty_Type`1213*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*1415Объект типа для встроенных типов дескрипторов.1617#### `PyObject *PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)`1819*Возвращаемое значение: новая ссылка.*2021*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*2223#### `PyObject *PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *meth)`2425*Возвращаемое значение: новая ссылка.*2627*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*2829#### `PyTypeObject PyMemberDescr_Type`3031*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*3233Объект типа для объектов дескрипторов элементов, созданных из структур [`PyMemberDef`](https://python-all.ru/3/c-api/structures.html#c.PyMemberDef). Эти дескрипторы предоставляют поля C-структуры как атрибуты типа и соответствуют объектам [`types.MemberDescriptorType`](https://python-all.ru/3/library/types.html#types.MemberDescriptorType) в Python.3435#### `PyTypeObject PyGetSetDescr_Type`3637*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*3839Объект типа для дескрипторов get/set, создаваемых из структур [`PyGetSetDef`](https://python-all.ru/3/c-api/structures.html#c.PyGetSetDef). Эти дескрипторы реализуют атрибуты, значение которых вычисляется функциями getter и setter на C, и используются для многих атрибутов встроенных типов.4041#### `PyObject *PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)`4243*Возвращаемое значение: новая ссылка.*4445*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*4647#### `PyTypeObject PyMethodDescr_Type`4849*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*5051Объект типа для объектов дескрипторов методов, созданных из структур [`PyMethodDef`](https://python-all.ru/3/c-api/structures.html#c.PyMethodDef). Эти дескрипторы предоставляют C-функции как методы типа и соответствуют объектам [`types.MemberDescriptorType`](https://python-all.ru/3/library/types.html#types.MemberDescriptorType) в Python.5253#### `PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *wrapper, void *wrapped)`5455*Возвращаемое значение: новая ссылка.*5657#### `PyTypeObject PyWrapperDescr_Type`5859*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*6061Объект типа для объектов дескрипторов-обёрток, создаваемых [`PyDescr_NewWrapper()`](https://python-all.ru/3/c-api/descriptor.html#c.PyDescr_NewWrapper) и [`PyWrapper_New()`](https://python-all.ru/3/c-api/descriptor.html#c.PyWrapper_New). Дескрипторы-обёртки используются внутри для предоставления специальных методов, реализованных через структуры-обёртки, и в Python представляются объектами [`types.WrapperDescriptorType`](https://python-all.ru/3/library/types.html#types.WrapperDescriptorType).6263#### `PyObject *PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)`6465*Возвращаемое значение: новая ссылка.*6667*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*6869#### `int PyDescr_IsData(PyObject *descr)`7071Возвращает ненулевое значение, если объект-дескриптор *descr* описывает атрибут данных, или `0`, если он описывает метод. *descr* должен быть объектом-дескриптором; проверка ошибок не выполняется.7273#### `PyObject *PyWrapper_New(PyObject*, PyObject*)`7475*Возвращаемое значение: новая ссылка.*7677*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*7879## Встроенные дескрипторы8081#### `PyTypeObject PySuper_Type`8283*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*8485Объект типа для объектов super. Это тот же объект, что и [`super`](https://python-all.ru/3/library/functions.html#super) в слое Python.8687#### `PyTypeObject PyClassMethod_Type`8889Тип объектов методов класса. Это тот же объект, что и [`classmethod`](https://python-all.ru/3/library/functions.html#classmethod) в слое Python.9091#### `PyTypeObject PyClassMethodDescr_Type`9293*Часть [Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).*9495Объект типа для дескрипторов методов класса на уровне C. Это тип дескрипторов, создаваемых для [`classmethod()`](https://python-all.ru/3/library/functions.html#classmethod), определённых в C-расширениях типов, и это тот же объект, что и [`classmethod`](https://python-all.ru/3/library/functions.html#classmethod) в Python.9697#### `PyObject *PyClassMethod_New(PyObject *callable)`9899Создаёт новый объект [`classmethod`](https://python-all.ru/3/library/functions.html#classmethod), оборачивающий *callable*. *callable* должен быть вызываемым объектом и не должен быть `NULL`.100101В случае успеха эта функция возвращает [сильную ссылку](https://python-all.ru/3/glossary.html#term-strong-reference) на новый дескриптор метода класса. При неудаче возвращает `NULL` с установленным исключением.102103#### `PyTypeObject PyStaticMethod_Type`104105Тип объектов статических методов. Это тот же объект, что и [`staticmethod`](https://python-all.ru/3/library/functions.html#staticmethod) в слое Python.106107#### `PyObject *PyStaticMethod_New(PyObject *callable)`108109Создаёт новый объект [`staticmethod`](https://python-all.ru/3/library/functions.html#staticmethod), оборачивающий *callable*. *callable* должен быть вызываемым объектом и не должен быть `NULL`.110111В случае успеха эта функция возвращает [сильную ссылку](https://python-all.ru/3/glossary.html#term-strong-reference) на новый дескриптор статического метода. При неудаче возвращает `NULL` с установленным исключением.112