Definire un globale in un modulo Python da un'API C
-
25-09-2019 - |
Domanda
sto sviluppando un modulo per Python utilizzando un'API C. Come posso creare una variabile che è visto come globale da Python?
Ad esempio, se il mio modulo è module
, voglio creare un g
variabile che fa questo lavoro:
import module
print module.g
In particolare, g
è un numero intero.
Soluzione da Alex Martelli
PyObject *m = Py_InitModule("mymodule", mymoduleMethods);
PyObject *v = PyLong_FromLong((long) 23);
PyObject_SetAttrString(m, "g", v);
Py_DECREF(v);
Soluzione
È possibile utilizzare PyObject_SetAttrString nella routine di inizializzazione del modulo, con primo argomento o
essere (il cast a (PyObject*)
del) il modulo, secondo argomento attr_name
essere "g", terzo argomento v
essere una variabile
PyObject *v = PyLong_FromLong((long) 23);
(o qualsiasi altro valore, naturalmente, 23
è solo un esempio -!).
Ricordate di decref v
in seguito.
Ci sono altri modi, ma questo è semplice e generale.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow