定义一个Python模块在全球从C API
-
25-09-2019 - |
题
我开发用于使用C API的Python的模块。如何创建一个被看作从Python的全局变量?
例如,如果我的模块是module
,我想创建一个变量g
做这件工作:
import module
print module.g
在特别地,g
是整数。
解决方案从亚历泰利
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
只是一个例子! - )。
千万记得要decref v
算账。
有其他的方法,但是这是一个简单的和一般性。
不隶属于 StackOverflow