I am deve开发者_开发技巧loping a module for Python using a C API. How can I create a variable that is seen as global from Python?
For example, if my module is module, I want to create a variable g that does this job:
import module
print module.g
In particular, g is an integer.
Solution from Alex Martelli
PyObject *m = Py_InitModule("mymodule", mymoduleMethods);
PyObject *v = PyLong_FromLong((long) 23);
PyObject_SetAttrString(m, "g", v);
Py_DECREF(v);
You can use PyObject_SetAttrString in your module's initialization routine, with first argument o being (the cast to (PyObject*) of) your module, second argument attr_name being "g", third argument v being a variable
PyObject *v = PyLong_FromLong((long) 23);
(or whatever other value of course, 23 is just an example!-).
Do remember to decref v afterwards.
There are other ways, but this one is simple and general.
加载中,请稍侯......
精彩评论