Defina um global em um módulo Python de uma API C C
-
25-09-2019 - |
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);
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