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

CObjects

Предупреждение

API CObject устарел начиная с Python 3.1. Переключитесь на новый Capsules API.

PyCObject
Этот подтип PyObject представляет непрозрачное значение, полезное для C-расширений, которым нужно передать непрозрачное значение (как указатель void*) через код Python в другой C-код. Часто используется, чтобы сделать указатель на функцию C, определённую в одном модуле, доступным для других модулей, так что обычный механизм импорта можно использовать для доступа к C API, определённым в динамически загружаемых модулях.
int PyCObject_Check(PyObject *p)
Возвращает true, если аргумент является PyCObject.
PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))
Возвращаемое значение: новая ссылка.

Создаёт PyCObject из void * cobj. Функция destr будет вызвана при освобождении объекта, если она не равна NULL.

PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))
Возвращаемое значение: новая ссылка.

Создаёт PyCObject из void * cobj. Функция destr будет вызвана при освобождении объекта. Аргумент desc можно использовать для передачи дополнительных данных колбэка в функцию деструктора.

void* PyCObject_AsVoidPtr(PyObject* self)
Возвращает объект void *, с которым был создан PyCObject self.
void* PyCObject_GetDesc(PyObject* self)
Возвращает описание void *, с которым был создан PyCObject self.
int PyCObject_SetVoidPtr(PyObject* self, void* cobj)
Устанавливает указатель void внутри self в cobj. PyCObject не должен иметь связанного деструктора. Возвращает true при успехе, false при неудаче.