3

有没有办法在嵌入式 Python 代码中获取现有对象的对象引用?

换句话说:如果一个名为 'obj' 的对象已经存在(由脚本创建),并且我需要将其“转换”为 PyObject* 引用,是否有类似的函数: PyObject *getObjectReference(char *name) ?

编辑:作为一个例子,假设我在代码的一部分中导入了一些模块,通过使用

PyRun_SimpleString("var = 1");

(或者也可以是定义相同变量的外部脚本)

现在,在代码的另一点中,我想获取该变量。我正在寻找类似的东西

PyObject *varPy = PyObject_GetGlobalObject("var");

在 c 中读取 python 的全局变量”部分回答了我的问题,隐含地说,如果没有对创建它的模块的引用,就无法检索全局定义的变量。这个对吗?

4

1 回答 1

1

通过在 c 中读取 python 的全局变量和我进行的一些测试,收集从 DavidW 收集的信息(感谢您的帮助) 。

要获取对已加载模块的引用,请使用:

PyImport_AddModule("module_name");

为了获得对全局定义变量的引用,请导入主模块并按名称获取引用:

PyObject *mainModule = PyImport_AddModule("__main__");
PyObject *var = PyObject_GetAttrString(mainModule, "var_name");

如果变量是在不同的模块/脚本中定义的,那么它将仅在该模块中可见(而不是全局可见)。因此,您必须将“ main ”更改为该特定模块的名称。

于 2016-10-25T12:59:22.833 回答