Tag: pyobject

错误:’PyObject’(又名’_object’)类型的值不能在上下文中转换为’bool’

我将一个python模块传递给C作为PyObject 。 我想使用以下表单检查我的C代码中的值是否为NONE: int func(PyObject tmp) { if(tmp) { // etc 我收到以下错误。 我如何从PyObject转换为布尔值,simillar转换为Python函数的行为方式。 值得注意的是,当tmp是boost::python::object变量时,此命令按预期工作。 ex_program.cpp:72:7: error: value of type ‘PyObject’ (aka ‘_object’) is not contextually convertible to ‘bool’ if (tmp) ^~~

如何将PyObject_IsInstance与非内置类一起用作第二个参数?

在C / C ++中,我想看看PyObject是否是一个实例。 不幸的是, PyInstance_Check宏不适用于新式类。 所以,根据我读过的论坛post, PyObject_IsInstance可以解决问题。 但是,我发现的所有示例都演示了与内置类型(如整数和字符串)的比较。 我想知道如何构造一个表示类型类的PyObject,所以我可以将它传递给PyObject_IsInstance的第二个参数。 你能帮助我吗?

挑选一个Python扩展类型,定义为具有PyObject *成员的C结构

我正在通过Python运行C ++代码,并希望挑选一个扩展类型。 所以我有一个C ++结构(py_db_manager),它包含指向数据库对象的指针和一个用python类型对象(t_db_manager)包装的对象管理器对象(都是用C ++编写的)。 我的问题是这个python类型需要知道如何pickle两个指针,以便将它发送到一些子多核进程。 所以我用copy_reg模块注册了这个类型(这相当于在类型上编写了一个reduce ()方法。但是,我不太清楚要放入什么内容。我应该用PyObject *构建一个元组,还是仅仅是整数指针?有人可以帮忙吗? typedef struct { PyObject_HEAD PyObject* man_inst_ ; PyObject* db_inst_ ; }py_db_manager;` 这是Py_TypeObject PyTypeObject t_db_manager = { PyObject_HEAD_INIT(0) /* tp_head */ 0, /* tp_internal */ “.py_db_manager”, /* tp_name */ sizeof(py_db_manager)}; 这里是reduce方法中的代码: PyObject *pickle_manager(PyObject *module, PyObject *args) { py_db_manager *cpp_manager =0; PyObject *values = NULL, *tuple = NULL; […]