Creación de Instancia de Python Tipo extensión en C
-
24-09-2019 - |
Pregunta
Estoy escribiendo una sencilla aplicación Vector
como un módulo de extensión de Python en C que se ve sobre todo como esta:
typedef struct {
PyObject_HEAD
double x;
double y;
} Vector;
static PyTypeObject Vector_Type = {
...
};
Es muy simple para crear instancias de Vector
al llamar desde Python, pero tengo que crear una instancia Vector
en el mismo módulo de extensión. Miré en la documentación, pero no pude encontrar una respuesta clara. ¿Cuál es la mejor manera de hacer esto?
Solución
Más simple es llamar al objeto de tipo que ha creado, por ejemplo, PyObject_CallFunction - no deje que el nombre de usted, tonto le permite llamar a cualquier exigible, no sólo una función.
Si usted no tiene una referencia a su objeto de tipo convenientemente disponible como static
global para el módulo C, puede recuperarlo de varias maneras, por supuesto (por ejemplo, de su objeto de módulo con un PyObject_GetAttrString ). Pero si se sigue que PyObject*
en una variable de nivel de módulo static
C es probablemente más simple y más conveniente.