有没有办法获取现有对象的对象引用, 在嵌入式Python代码中?
换句话说: 如果一个名为“对象”的对象已经存在(由脚本创建), 我需要"转换"它是一个PyObject *引用,是否有一个函数:PyObject * getObjectReference(char * name)?
编辑: 举个例子, 让我们说我通过使用
在代码的一部分中导入一些模块PyRun_SimpleString("var = 1");
(或者它也可以是定义相同变量的外部脚本)
现在,在代码的另一点我想得到那个变量。我正在寻找像
这样的东西PyObject *varPy = PyObject_GetGlobalObject("var");
" reading a global variable of python in c"部分回答我的问题隐含地说,如果没有对创建它的模块的引用,就不可能检索全局定义的变量。这是对的吗?
答案 0 :(得分:0)
汇总从DavidW收集的信息(感谢您的帮助),reading a global variable of python in c以及我做的一些测试。
要获取对已加载模块的引用,请使用:
PyImport_AddModule("module_name");
为了获得对全局定义变量的引用,导入主模块并按名称获取引用:
PyObject *mainModule = PyImport_AddModule("__main__");
PyObject *var = PyObject_GetAttrString(mainModule, "var_name");
如果变量是在不同的模块/脚本中定义的,那么它只在该模块中可见(不是全局的)。 所以你必须改变" main "以及该特定模块的名称。