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

---

# CObjects

> **Предупреждение**
>
> API CObject устарел начиная с Python 3.1. Переключитесь на новый [*Capsules*](https://python-all.ru/3.1/c-api/capsule.html#capsules) API.

**`PyCObject`**

Этот подтип

[`PyObject`](https://python-all.ru/3.1/c-api/structures.html#PyObject)

представляет непрозрачное значение, полезное для C-расширений, которым нужно передать непрозрачное значение (как указатель

`void*`

) через код Python в другой C-код. Часто используется, чтобы сделать указатель на функцию C, определённую в одном модуле, доступным для других модулей, так что обычный механизм импорта можно использовать для доступа к C API, определённым в динамически загружаемых модулях.

**int `PyCObject_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**

Возвращает true, если аргумент является

[`PyCObject`](https://python-all.ru/3.1/c-api/cobject.html#PyCObject)

.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyCObject_FromVoidPtr`(void\* *cobj*, void (\*destr)(void *\*)*)**

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

Создаёт [`PyCObject`](https://python-all.ru/3.1/c-api/cobject.html#PyCObject) из `void *` *cobj*. Функция *destr* будет вызвана при освобождении объекта, если она не равна *NULL*.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyCObject_FromVoidPtrAndDesc`(void\* *cobj*, void\* *desc*, void (\*destr)(void *\**, void *\*)*)**

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

Создаёт [`PyCObject`](https://python-all.ru/3.1/c-api/cobject.html#PyCObject) из `void *` *cobj*. Функция *destr* будет вызвана при освобождении объекта. Аргумент *desc* можно использовать для передачи дополнительных данных колбэка в функцию деструктора.

**void\* `PyCObject_AsVoidPtr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* *self*)**

Возвращает объект

`void *`

, с которым был создан

[`PyCObject`](https://python-all.ru/3.1/c-api/cobject.html#PyCObject)

*self*

.

**void\* `PyCObject_GetDesc`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* *self*)**

Возвращает описание

`void *`

, с которым был создан

[`PyCObject`](https://python-all.ru/3.1/c-api/cobject.html#PyCObject)

*self*

.

**int `PyCObject_SetVoidPtr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* *self*, void\* *cobj*)**

Устанавливает указатель void внутри

*self*

в

*cobj*

.

[`PyCObject`](https://python-all.ru/3.1/c-api/cobject.html#PyCObject)

не должен иметь связанного деструктора. Возвращает true при успехе, false при неудаче.
