嵌入Python:如何在Python脚本中使用自定义类型?

时间:2014-01-12 13:11:39

标签: python c++ python-c-api python-embedding

我尝试从C ++代码中运行一些Python脚本。我达到了这一点,我需要使用我的自定义类型。我找到article in Python doc关于创建自定义类型和nice SOQ,解释了如何在C ++端创建自定义类型的实例。

但是,我不确定如何在Python中使用此类型。在doc示例中,定义了“模块初始值设定项”:

PyMODINIT_FUNC PyInit_module_type(void) 
{
    CX_type.tp_new = PyType_GenericNew;
    if (PyType_Ready(&CX_type) < 0)
        return NULL;
    //create module, return it
}

但没有提示这个功能的目的是什么。如何(以及何时)调用此函数?

目前,我通过PyEval_EvalCode()运行我的脚本来运行整个脚本或PyObject_Call()来运行特定的功能。在这两种情况下如何使用我的类型?我是否需要先以某种方式导入它?

如果我将脚本导入为模块:

PyObject* pm_1 = PyImport_Import("pm_1.py")

我是否需要将我的类型添加到我以这种方式创建的每个模块中:

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

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

0 个答案:

没有答案