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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top