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

method.md

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

1> **Источник:** https://python-all.ru/3.0/c-api/method.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты методов экземпляра89Метод экземпляра – это обёртка для [`PyCFunction`](https://python-all.ru/3.0/c-api/structures.html#PyCFunction) и новый способ привязать [`PyCFunction`](https://python-all.ru/3.0/c-api/structures.html#PyCFunction) к объекту класса. Он заменяет прежний вызов `PyMethod_New(func, NULL, class)`.1011**\[PyInstanceMethod\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyInstanceMethod_Type`**1213Этот экземпляр1415[`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject)1617представляет тип метода экземпляра Python. Он не доступен программам на Python.1819**\[PyInstanceMethod\_Check\]int `PyInstanceMethod_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**2021Возвращает true, если2223*o*2425является объектом метода экземпляра (имеет тип2627[`PyInstanceMethod_Type`](https://python-all.ru/3.0/c-api/method.html#PyInstanceMethod_Type)2829). Параметр не должен быть3031*NULL*3233.3435**\[PyInstanceMethod\_New\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyInstanceMethod_New`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*func*)**3637Возвращает новый объект метода экземпляра, где3839*func*4041– любой вызываемый объект.4243*func*4445– функция, которая будет вызвана при вызове метода экземпляра.4647**\[PyInstanceMethod\_Function\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyInstanceMethod_Function`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*im*)**4849Возвращает объект функции, связанный с методом экземпляра5051*im*5253.5455**\[PyInstanceMethod\_GET\_FUNCTION\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyInstanceMethod_GET_FUNCTION`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*im*)**5657Макро-версия5859[`PyInstanceMethod_Function`](https://python-all.ru/3.0/c-api/method.html#PyInstanceMethod_Function)6061, которая не выполняет проверку ошибок.6263# Объекты методов6465Методы – это привязанные объекты-функции. Методы всегда привязаны к экземпляру пользовательского класса. Непривязанные методы (методы, привязанные к объекту класса) больше не поддерживаются.6667**\[PyMethod\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyMethod_Type`**6869Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) представляет тип метода Python. Он доступен программам на Python как `types.MethodType`.7071**\[PyMethod\_Check\]int `PyMethod_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**7273Возвращает true, если7475*o*7677является объектом метода (имеет тип7879[`PyMethod_Type`](https://python-all.ru/3.0/c-api/method.html#PyMethod_Type)8081). Параметр не должен быть8283*NULL*8485.8687**\[PyMethod\_New\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyMethod_New`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*func*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*self*)**8889*Возвращаемое значение: новая ссылка.*9091Возвращает новый объект метода, где *func* – любой вызываемый объект, а *self* – экземпляр, к которому должен быть привязан метод. *func* – функция, которая будет вызвана при вызове метода. *self* не должен быть *NULL*.9293**\[PyMethod\_Function\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyMethod_Function`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*meth*)**9495*Возвращаемое значение: заимствованная ссылка.*9697Возвращает объект функции, связанный с методом *meth*.9899**\[PyMethod\_GET\_FUNCTION\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyMethod_GET_FUNCTION`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*meth*)**100101*Возвращаемое значение: заимствованная ссылка.*102103Макро-версия [`PyMethod_Function`](https://python-all.ru/3.0/c-api/method.html#PyMethod_Function), которая не выполняет проверку ошибок.104105**\[PyMethod\_Self\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyMethod_Self`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*meth*)**106107*Возвращаемое значение: заимствованная ссылка.*108109Возвращает экземпляр, связанный с методом *meth*.110111**\[PyMethod\_GET\_SELF\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyMethod_GET_SELF`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*meth*)**112113*Возвращаемое значение: заимствованная ссылка.*114115Макро-версия [`PyMethod_Self`](https://python-all.ru/3.0/c-api/method.html#PyMethod_Self), которая не выполняет проверку ошибок.116117**\[PyMethod\_ClearFreeList\]int `PyMethod_ClearFreeList`(void)**118119Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.120