I am developing 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.
来源:https://stackoverflow.com/questions/3001239/define-a-global-in-a-python-module-from-a-c-api