Creare un oggetto utilizzando API C di Python
-
08-10-2019 - |
Domanda
Dire che ho il mio layout oggetto definito come:
typedef struct {
PyObject_HEAD
// Other stuff...
} pyfoo;
... e il mio tipo di definizione:
static PyTypeObject pyfoo_T = {
PyObject_HEAD_INIT(NULL)
// ...
pyfoo_new,
};
Come si crea una nuova istanza di pyfoo
da qualche parte nel mio estensione C?
Soluzione
PyObject_New () , seguito da PyObject_Init () .
Modifica Il modo migliore è quello di chiamata l'oggetto di classe, proprio come in Python stesso:
/* 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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow