Создать PyObject * из функции C?

Я встраиваю Python в библиотеку C ++, которую делаю. Я хотел бы, чтобы пользователи могли передавать функции C в виде указателей функций PyObject * (fpFunc *) (PyObject *, PyObject *); , чтобы я мог использовать эти функции во встроенном Python.

Итак, у меня есть указатель на функцию, и я знаю, что можно поместить эту функцию как метод модуля, используя структуру PyMethodDef и передав ее в Py_InitModule ("модуль", ModMethods); и, таким образом, получая модуль PyObject * , из которого я могу легко брать функции.

Но что я действительно был бы признателен, так это возможность создавать эту функцию на лету без необходимости повторного создания каждого модуля время.

Я просмотрел документацию Python и некоторые заголовки Python, чтобы подумать о хакерском способе сделать это без реального успеха ... но мне интересно, есть ли более традиционный способ сделать это.

Насколько я понял, каждая функция принадлежит модулю, даже __ builtin __ , поэтому я бы требуется хотя бы один модуль.

Есть идеи, как этого добиться?

11
задан Manux 8 July 2011 в 15:02
поделиться