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

---

# CObjects

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

**`PyCObject`**

Этот подтип [`PyObject`](https://python-all.ru/2.7/c-api/structures.html#c.PyObject) представляет собой непрозрачное значение, полезное для C модулей расширения, которым нужно передать непрозрачное значение (в виде `void*` указателя) через код Python в другой код C. Часто используется, чтобы сделать указатель на функцию C , определённую в одном модуле, доступной для других модулей, так что обычный механизм импорта может использоваться для доступа к C API, определённым в динамически загружаемых модулях.

#### `int PyCObject_Check(PyObject *p)`

Возвращает true, если аргумент является объектом [`PyCObject`](https://python-all.ru/2.7/c-api/cobject.html#c.PyCObject).

#### `PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))`

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

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

#### `PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))`

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

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

#### `void* PyCObject_AsVoidPtr(PyObject* self)`

Возвращает объект `void *`, с которым [`PyCObject`](https://python-all.ru/2.7/c-api/cobject.html#c.PyCObject) *self* был создан.

#### `void* PyCObject_GetDesc(PyObject* self)`

Возвращает описание `void *`, с которым [`PyCObject`](https://python-all.ru/2.7/c-api/cobject.html#c.PyCObject) *self* был создан.

#### `int PyCObject_SetVoidPtr(PyObject* self, void* cobj)`

Устанавливает указатель void внутри *self* в *cobj*. [`PyCObject`](https://python-all.ru/2.7/c-api/cobject.html#c.PyCObject) не должен иметь связанного деструктора. Возвращает true при успехе, false при ошибке.
