Определить глобальный в модуле Python из C API - PullRequest
4 голосов
/ 09 июня 2010

Я занимаюсь разработкой модуля для Python с использованием C API.Как я могу создать переменную, которая рассматривается как глобальная из 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);

1 Ответ

4 голосов
/ 09 июня 2010

Вы можете использовать PyObject_SetAttrString в процедуре инициализации вашего модуля, с первым аргументом o, являющимся (приведением к (PyObject*) из) вашего модуля, второй аргумент attr_name, являющийся "g", третьим аргументом v является переменной

PyObject *v = PyLong_FromLong((long) 23);

(или любое другое значение, конечно, 23 это просто пример! -).

Не забудьте потом уменьшить v.

Есть и другие способы, но этот простой и общий.

...