【发布时间】:2017-03-06 11:34:36
【问题描述】:
有没有办法获取现有对象的对象引用, 在嵌入式 Python 代码中?
换句话说: 如果一个名为“obj”的对象已经存在(由脚本创建), 我需要将它“转换”为 PyObject* 引用,是否有类似的函数: PyObject *getObjectReference(char *name) ?
编辑: 例如, 假设我在代码的一部分中导入了一些模块,通过使用
PyRun_SimpleString("var = 1");
(或者也可以是定义相同变量的外部脚本)
现在,在代码的另一点中,我想获取该变量。我正在寻找类似的东西
PyObject *varPy = PyObject_GetGlobalObject("var");
"reading a global variable of python in c" 部分回答了我的问题,隐含地说,如果没有对创建它的模块的引用,就无法检索全局定义的变量。这是正确的吗?
【问题讨论】:
-
您能否添加更多代码来显示您正在尝试做什么?
-
响应您的编辑:如果您知道变量所在的模块的名称,您可以导入它以获取对模块的引用(导入已经导入的模块没有问题)。
-
另外,如果你查看
PyRun_SimpleString的文档,它会告诉你它运行的模块是__main__ -
感谢 DavidW 的建议。该变量不是由任何模块生成的,而是由主脚本生成的。我认为它可以从 main 中检索,但在另一个问题(“读取全局变量......”)中,这家伙说它对他不起作用(可能是因为它的变量已定义在脚本中?)。我会试试看的!
-
像魅力一样工作!再次感谢。我将为我的问题写一个完整的答案以供进一步参考。
标签: python python-2.7 python-c-api pyobject