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

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

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

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

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

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

One Solution collect form web for “Создание объекта с использованием API Python 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); 
  • Импорт и использование стандартного модуля Python из внутреннего расширения Python C
  • Как я могу написать функцию C, которая принимает либо int, либо float?
  • Как указать docstring для __init__ в расширении Python C
  • Указатели и «Хранение небезопасной производной C от временной ссылки на Python»
  • Могу ли я использовать скомпилированные Python-файлы MinGW вместе с скомпилированными Visual C ++?
  • почему я не смог построить sqlite3 при сборке python?
  • Как построить расширение Python C, чтобы я мог импортировать его из модуля
  • Отладка расширений Python
  • Python - лучший язык программирования в мире.