Domanda

Sto scrivendo una semplice implementazione Vector come un modulo di estensione Python in C che guarda soprattutto come questo:

typedef struct {
    PyObject_HEAD
    double x;
    double y;
} Vector;

static PyTypeObject Vector_Type = {
    ...
};

E 'molto semplice da creare istanze di Vector durante la chiamata da Python, ma ho bisogno di creare un'istanza Vector nello stesso modulo di estensione. Ho guardato nella documentazione, ma non sono riuscito a trovare una risposta chiara. Qual è il modo migliore per fare questo?

È stato utile?

Soluzione

più semplice è quello di chiamare l'oggetto tipo che hai creato, ad esempio, con PyObject_CallFunction - non lasciate che il nome, è ingannare consente di richiamare qualsiasi callable, non solo una funzione.

Se non si dispone di un riferimento al tipo di oggetto comodamente disponibile come static globale per il modulo C, è possibile recuperare in vari modi, naturalmente (ad esempio, dal vostro oggetto modulo con un PyObject_GetAttrString ). Ma attaccare che PyObject* in una variabile static a livello di modulo C è probabilmente più semplice e più conveniente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top