Criando instância do tipo de extensão python em c
-
24-09-2019 - |
Pergunta
Estou escrevendo um simples Vector
Implementação como um módulo de extensão Python em C que se parece principalmente com o seguinte:
typedef struct {
PyObject_HEAD
double x;
double y;
} Vector;
static PyTypeObject Vector_Type = {
...
};
É muito simples criar instâncias de Vector
Enquanto ligava de Python, mas eu preciso criar um Vector
instância no mesmo módulo de extensão. Eu olhei na documentação, mas não consegui encontrar uma resposta clara. Qual é a melhor forma de fazer isso?
Solução
Mais simples é chamar o objeto de tipo que você criou, por exemplo, Pyobject_callfunction - Não deixe o nome te enganar, permite que você ligue algum chamável, não apenas uma função.
Se você não tiver uma referência ao seu objeto de tipo convenientemente disponível como um static
Global para o seu módulo C, você pode recuperá -lo de várias maneiras, é claro (por exemplo, do seu objeto de módulo com um Pyobject_getAtTrString). Mas enfiando isso PyObject*
dentro de static
A variável C no nível do módulo é provavelmente mais simples e conveniente.