Définir une approche globale dans un module Python à partir d'une API C
-
25-09-2019 - |
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);
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