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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top