Создание объекта с использованием API Python C

Скажем, у меня есть макет объекта, который определяется как:

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

… и мое определение типа:

 static PyTypeObject pyfoo_T = { PyObject_HEAD_INIT(NULL) // ... pyfoo_new, }; 

Как создать новый экземпляр pyfoo где-нибудь в моем расширении C?

Вызовите PyObject_New () , а затем PyObject_Init () .

EDIT: лучший способ – вызвать объект класса, как и в Python:

 /* 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);