开发者

Define a global in a Python module from a C API

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜