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);
È stato utile?

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
scroll top