Intentando construir una clase de Python en una extensión de C que se puede instanciar desde un módulo de Python

Estoy tratando de crear una clase de excepción que pueda usar tanto en una extensión C como en los módulos de Python que importan la extensión. Estoy usando PyErr_NewException para crear la clase como una superclase de la clase Exception, pero no puedo averiguar cómo crear una __init__ constructor de la clase. Supongo que es la mejor manera de completar la clase con los atributos que necesito.

preguntado el 27 de agosto de 11 a las 19:08

¿Qué tienes hasta ahora? -

PyObject * falla; PyObject * module = Py_InitModule3 ("andro", métodos, moduleDocstring); int fd; dispositivo sin firmar; Api api; if (module! = NULL) {// El inicio del módulo fue exitoso failure = PyErr_NewException ("andro.Failure", NULL, Py_BuildValue ("{}")); PyModule_AddObject (módulo, "Falla", falla); -

1 Respuestas

Deberías pasar un dict como tercer argumento para PyErr_NewException. El dict debe tener un __init__ clave vinculada a su función de inicializador.

Respondido 28 ago 11, 00:08

Lo he explorado, pero no puedo decir qué tipo de objeto asociar con el "init"clave. ¿Es un objeto de código? - Marc LeFevre

Una función, supongo. Encontré algunos ejemplos semi-interesantes cuando busqué en línea. - John Zwinck

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.