Créer un objet en utilisant l'API C Python
-
08-10-2019 - |
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?
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