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

---

# Объекты методов экземпляра

Метод экземпляра – это обёртка для [`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)`.

**\[PyInstanceMethod\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyInstanceMethod_Type`**

Этот экземпляр

[`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject)

представляет тип метода экземпляра Python. Он не доступен программам на Python.

**\[PyInstanceMethod\_Check\]int `PyInstanceMethod_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**

Возвращает true, если

*o*

является объектом метода экземпляра (имеет тип

[`PyInstanceMethod_Type`](https://python-all.ru/3.0/c-api/method.html#PyInstanceMethod_Type)

). Параметр не должен быть

*NULL*

.

**\[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*)**

Возвращает новый объект метода экземпляра, где

*func*

– любой вызываемый объект.

*func*

– функция, которая будет вызвана при вызове метода экземпляра.

**\[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*)**

Возвращает объект функции, связанный с методом экземпляра

*im*

.

**\[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*)**

Макро-версия

[`PyInstanceMethod_Function`](https://python-all.ru/3.0/c-api/method.html#PyInstanceMethod_Function)

, которая не выполняет проверку ошибок.

# Объекты методов

Методы – это привязанные объекты-функции. Методы всегда привязаны к экземпляру пользовательского класса. Непривязанные методы (методы, привязанные к объекту класса) больше не поддерживаются.

**\[PyMethod\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyMethod_Type`**

Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) представляет тип метода Python. Он доступен программам на Python как `types.MethodType`.

**\[PyMethod\_Check\]int `PyMethod_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**

Возвращает true, если

*o*

является объектом метода (имеет тип

[`PyMethod_Type`](https://python-all.ru/3.0/c-api/method.html#PyMethod_Type)

). Параметр не должен быть

*NULL*

.

**\[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*)**

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

Возвращает новый объект метода, где *func* – любой вызываемый объект, а *self* – экземпляр, к которому должен быть привязан метод. *func* – функция, которая будет вызвана при вызове метода. *self* не должен быть *NULL*.

**\[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*)**

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

Возвращает объект функции, связанный с методом *meth*.

**\[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*)**

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

Макро-версия [`PyMethod_Function`](https://python-all.ru/3.0/c-api/method.html#PyMethod_Function), которая не выполняет проверку ошибок.

**\[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*)**

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

Возвращает экземпляр, связанный с методом *meth*.

**\[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*)**

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

Макро-версия [`PyMethod_Self`](https://python-all.ru/3.0/c-api/method.html#PyMethod_Self), которая не выполняет проверку ошибок.

**\[PyMethod\_ClearFreeList\]int `PyMethod_ClearFreeList`(void)**

Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.
