Question

Dire que j'ai ma mise en page de l'objet défini comme:

typedef struct {
    PyObject_HEAD
    // Other stuff...
} pyfoo;

... et ma définition de type:

static PyTypeObject pyfoo_T = {
    PyObject_HEAD_INIT(NULL)
    // ...

    pyfoo_new,
};

Comment puis-je créer une nouvelle instance de quelque part de pyfoo dans mon extension C?

Était-ce utile?

La solution

Appel PyObject_New () , suivi de PyObject_Init () .

EDIT: La meilleure façon est de appel l'objet de classe, tout comme en Python lui-même:

/* Pass two arguments, a string and an int. */
PyObject *argList = Py_BuildValue("si", "hello", 42);

/* Call the class object. */
PyObject *obj = PyObject_CallObject((PyObject *) &pyfoo_T, argList);

/* Release the argument list. */
Py_DECREF(argList);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top