Pregunta

Decir que tengo a mi disposición objeto definido como:

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

... y mi definición de tipo:

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

    pyfoo_new,
};

¿Cómo se crea una nueva instancia de algún lugar dentro de mi pyfoo extensión C?

¿Fue útil?

Solución

Llamada PyObject_New () , seguido por PyObject_Init () .

EDIT: La mejor forma de hacerlo es llamada el objeto de clase, al igual que en Python en sí:

/* 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top