2009-12-23 9 views

Respuesta

5

¡Lo encontró! Solo se trata de establecer el elemento tp_dict del objeto tipo y completar las entradas de adición de cada una de las variables estáticas. El siguiente código C crea la misma variable estática que el código Python anterior:

PyTypeObject type; 
// ...other initialisation... 
type.tp_dict = PyDict_New(); 
PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1)); 
2

Puede pasar ese código fuente a Py_CompileString con los indicadores apropiados.

Si ya tiene la clase, puede usar PyObject_SetAttr.

+0

Gracias por la sugerencia. Sin embargo, parece una forma indirecta de hacerlo: ¿hay algo similar a PyModule_AddIntConstant para las clases? – Vil

+0

Lo siento, acabo de notar que actualizaste tu respuesta. Gracias de nuevo por la ayuda. He intentado usar PyObject_SetAttr, pero no importa cuándo lo llamo, obtengo un TypeError con el mensaje "no se puede establecer atributos de tipo de extensión/extensión X" (donde X es mi nombre de tipo). ¿Estoy haciendo algo mal, o simplemente esto no funciona con objetos tipo? – Vil

+0

¿Debe pegar su código? – joeforker

Cuestiones relacionadas