Встраивание Python: как использовать пользовательский тип внутри скрипта Python?

Я пытаюсь запустить некоторые скрипты Python внутри кода C ++. Я достигаю точки, в которой мне нужно использовать свой собственный тип. я нашел статья в Python doc о создании пользовательских типов и хороший SOQ, объясняя, как создавать экземпляры пользовательского типа на стороне C ++.

Однако я не уверен, как мне использовать этот тип в Python. В примере документа определен «инициализатор модуля»:

PyMODINIT_FUNC PyInit_module_type(void)
{
CX_type.tp_new = PyType_GenericNew;
if (PyType_Ready(&CX_type) < 0)
return NULL;
//create module, return it
}

Но нет никаких намеков на то, что является целью этой функции. Как (и когда) эта функция вызывается?

В настоящее время я запускаю свои скрипты либо с помощью PyEval_EvalCode () для запуска всего скрипта, либо с помощью PyObject_Call () для запуска определенной функции. Как мне использовать мой тип в обоих случаях? Нужно ли сначала импортировать его как-нибудь?

Если я импортирую свои скрипты как модули:

PyObject* pm_1 = PyImport_Import("pm_1.py")

мне нужно добавить свой тип для каждого модуля, который я создаю следующим образом:

Py_INCREF(&CX_type);
PyModule_AddObject(pm_1, "CX", (PyObject*)&CX_type);

? Я думаю, что типы, созданные после Py_Initialize () (то есть во время одного сеанса интерпретатора), должны автоматически отображаться для всех модулей, импортированных во время этого сеанса. Я ошибся?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]