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

---

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

Метод экземпляра – это обёртка для [`PyCFunction`](https://python-all.ru/3.5/c-api/structures.html#c.PyCFunction) и новый способ привязки [`PyCFunction`](https://python-all.ru/3.5/c-api/structures.html#c.PyCFunction) к объекту класса. Он заменяет прежний вызов `PyMethod_New(func, NULL, class)`.

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

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

#### `int PyInstanceMethod_Check(PyObject *o)`

Возвращает истину, если *o* является объектом метода экземпляра (имеет тип [`PyInstanceMethod_Type`](https://python-all.ru/3.5/c-api/method.html#c.PyInstanceMethod_Type)). Параметр не должен быть *NULL*.

#### `PyObject* PyInstanceMethod_New(PyObject *func)`

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

#### `PyObject* PyInstanceMethod_Function(PyObject *im)`

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

#### `PyObject* PyInstanceMethod_GET_FUNCTION(PyObject *im)`

Макрос-версия [`PyInstanceMethod_Function()`](https://python-all.ru/3.5/c-api/method.html#c.PyInstanceMethod_Function), которая избегает проверки ошибок.

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

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

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

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

#### `int PyMethod_Check(PyObject *o)`

Возвращает истину, если *o* является объектом метода (имеет тип [`PyMethod_Type`](https://python-all.ru/3.5/c-api/method.html#c.PyMethod_Type)). Параметр не должен быть *NULL*.

#### `PyObject* PyMethod_New(PyObject *func, PyObject *self)`

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

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

#### `PyObject* PyMethod_Function(PyObject *meth)`

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

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

#### `PyObject* PyMethod_GET_FUNCTION(PyObject *meth)`

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

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

#### `PyObject* PyMethod_Self(PyObject *meth)`

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

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

#### `PyObject* PyMethod_GET_SELF(PyObject *meth)`

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

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

#### `int PyMethod_ClearFreeList()`

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