У меня есть код Python, работающий внутри моей программы на C ++, и Python необходимо читать / записывать в C структуры, созданные на C ++.
Итак, я хочу создать класс в Python, который, учитывая имена полей и смещения, может обращаться к полям из структуры C.
Я решил проблему, создав базу класс, который:
- Имеет словарь fieldNames -> [fieldOffset, fieldType] (заполняется во время инициализации из "config", определенного в производном классе).
- Устанавливает
PyTypeObject.tp_getattro
и PyTypeObject.tp_setattro
для функций, которые ищут данные с помощью словаря.
Это решение довольно медленное, так как поля нужно искать по имени. Есть ли способ лучше? Можно ли как-то использовать slots для решения этой проблемы (возможно, с использованием сгенерированного кода)?