Question

Je développe un module pour Python en utilisant une API C. Comment puis-je créer une variable qui est considérée comme globale de Python?

Par exemple, si mon module est module, je veux créer une g variable qui fait ce travail:

import module
print module.g

En particulier, g est un nombre entier.

Solution de Alex Martelli

PyObject *m = Py_InitModule("mymodule", mymoduleMethods);
PyObject *v = PyLong_FromLong((long) 23);

PyObject_SetAttrString(m, "g", v);
Py_DECREF(v);
Était-ce utile?

La solution

Vous pouvez utiliser PyObject_SetAttrString dans la routine d'initialisation de votre module, avec o premier argument étant (la distribution de (PyObject*) de) votre module, deuxième attr_name argument étant "g", troisième argument v étant une variable

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

(ou tout autre valeur bien sûr, 23 est juste un exemple -).

N'oubliez pas de decref v après.

Il y a d'autres façons, mais celui-ci est simple et général.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top