Define a global in a Python module from a C API
-
25-09-2019 - |
Question
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);
Solution
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.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow