嵌入Python:如何在Python脚本中使用自定义类型? 我尝试从C++代码内部运行一些python脚本。我达到了需要使用自定义类型的程度。我发现了创建自定义类型,并解释了如何在C++侧创建自定义类型的实例。

嵌入Python:如何在Python脚本中使用自定义类型? 我尝试从C++代码内部运行一些python脚本。我达到了需要使用自定义类型的程度。我发现了创建自定义类型,并解释了如何在C++侧创建自定义类型的实例。,python,c++,python-c-api,python-embedding,Python,C++,Python C Api,Python Embedding,但是,我不确定我应该如何在Python中使用这种类型。在文档示例中,定义了“模块初始值设定项”: PyMODINIT_FUNC PyInit_module_type(void) { CX_type.tp_new = PyType_GenericNew; if (PyType_Ready(&CX_type) < 0) return NULL; //create module, return it } 我是否需要将我的类型添加到以这种方式创建

但是,我不确定我应该如何在Python中使用这种类型。在文档示例中,定义了“模块初始值设定项”:

PyMODINIT_FUNC PyInit_module_type(void) 
{
    CX_type.tp_new = PyType_GenericNew;
    if (PyType_Ready(&CX_type) < 0)
        return NULL;
    //create module, return it
}
我是否需要将我的类型添加到以这种方式创建的每个模块中:

Py_INCREF(&CX_type);
PyModule_AddObject(pm_1, "CX", (PyObject*)&CX_type);

??我认为,在Py_Initialize()之后创建的类型(因此,在单解释器会话期间)应该对在该会话期间导入的所有模块自动可见。我错了吗?

您所定义的函数类型就是
PyInit\u模块吗?对于自定义数据类型,应该有更多。您需要定义数据类型本身以及指向其构造函数、析构函数和成员函数的指针。你定义了所有这些吗?是的。我有处理new、init和dealoc、getter/setter和members定义等的函数。还有数据类型struct本身,填充了所有必需的值(上面代码中的CX_类型)。但是,我不知道在Python中执行单个函数(PyObject_Call())和代码对象(PyEval_EvalCode())时如何使用它。
Py_INCREF(&CX_type);
PyModule_AddObject(pm_1, "CX", (PyObject*)&CX_type);