CObjects

Warning

从 Python 2.7 开始不推荐使用 CObject API。请切换到新的Capsules API。

  • PyCObject

    • PyObject的子类型表示不透明值,对于需要pass Python 代码将不透明值(作为void*指针)pass Python 代码传递给其他 C 代码的 C 扩展模块很有用。它通常用于使一个模块中定义的 C 函数指针可用于其他模块,因此常规导入机制可用于访问动态加载的模块中定义的 C API。
  • int PyCObject_Check(PyObject ** p *)

    • 如果其参数为PyCObject,则返回 true。
  • PyObject * PyCObject_FromVoidPtr(void * * cobj ,void(* destr *)(void *))

    • 返回值:新参考.

void * * cobj 创建一个PyCObject。回收对象时将调用 destr 函数,除非它为 NULL *。

  • PyObject * PyCObject_FromVoidPtrAndDesc(void * * cobj ,void * * desc ,void( destr *)(void *,void *))
    • 返回值:新参考.

void * * cobj 创建一个PyCObject。回收对象时,将调用 destr *函数。 * desc *参数可用于传递析构函数的额外回调数据。

  • void * PyCObject_AsVoidPtr(PyObject * * self *)

    • 返回创建PyCObject * self *的对象void *
  • void * PyCObject_GetDesc(PyObject * * self *)

    • 返回创建PyCObject 自身的说明void *
  • int PyCObject_SetVoidPtr(PyObject * * self *,void * * cobj *)

    • 将* self 内部的 void 指针设置为 cobj *。 PyCObject不得具有关联的析构函数。成功返回 true,失败返回 false。