Я решил эту проблему с помощью статической глобальной переменной.
объявить статическую глобальную переменную совместно используемую переменную python в заголовочном файле.
static Animal* g_animal;
Написать функцию для установки и получения g_animal.
Animal* SetCppInstance(PyObject* capsule);
Animal* GetCppInstance();
Вы можете установить указатель созданного животного объекта в c ++ для использования в python.
Чтобы установить g_aniaml в python, используйте PyObject_CallFunction ().
Animal aniaml;
PyObject *py_module_animal = PyImport_ImportModule("animal");
PyObject *py_module_animal_setcppinstance = PyObject_GetAttrString(py_module_animal, "SetCppInstance");
PyObject_CallFunction(py_module_animal_setcppinstance, "O", py_capsule_animal);
И вы должны получить свой модуль Python. Чтобы получить модуль Python Animal, я использую Swig.
Затем вы должны написать control.py для управления животным.
import animal
obj = animal.GetCppInstance()
...
Конечно, вы должны вызывать control.py вручную в c ++.
PyImport_ImportModule("control");
Теперь, если вы управляете obj в control.py, то и животное в c ++ также изменится.