Pergunta

Estou desenvolvendo um módulo para Python usando uma API C. Como posso criar uma variável que é vista como global do Python?

Por exemplo, se meu módulo for module, Eu quero criar uma variável g Isso faz este trabalho:

import module
print module.g

Em particular, g é um número inteiro.

Solução de Alex Martelli

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

PyObject_SetAttrString(m, "g", v);
Py_DECREF(v);
Foi útil?

Solução

Você pode usar Pyobject_setAtTrString Na rotina de inicialização do seu módulo, com o primeiro argumento o sendo (o elenco para (PyObject*) de) seu módulo, segundo argumento attr_name sendo "g", terceiro argumento v sendo uma variável

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

(ou qualquer outro valor, é claro, 23 é apenas um exemplo!-).

Lembre -se de decretar v mais tarde.

Existem outras maneiras, mas essa é simples e geral.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top