通过C API在Python模块中定义全局变量
我正在使用C API开发适用于Python的模块。如何创建在Python中被视为全局变量?
例如,如果我的模块是module
,我想创建一个g
可以完成此任务的变量:
import module
print module.g
特别g
是整数。
Alex Martelli的解决方案
PyObject *m = Py_InitModule("mymodule", mymoduleMethods);
PyObject *v = PyLong_FromLong((long) 23);
PyObject_SetAttrString(m, "g", v);
Py_DECREF(v);
-
您可以在模块的初始化例程中使用PyObject_SetAttrString,第一个参数
o
是模块的(强制转换(PyObject*)
为),第二个参数attr_name
是“
g”,第三个参数v
是变量PyObject *v = PyLong_FromLong((long) 23);
(或者其他任何当然的值,
23
仅是示例!-)。切记
v
之后请先解密。还有其他方法,但这是简单而通用的。