Python обертка для C структуры - PullRequest
0 голосов
/ 22 марта 2020

У меня есть код Python, работающий внутри моей программы на C ++, и Python необходимо читать / записывать в C структуры, созданные на C ++.

Итак, я хочу создать класс в Python, который, учитывая имена полей и смещения, может обращаться к полям из структуры C.

Я решил проблему, создав базу класс, который:

  1. Имеет словарь fieldNames -> [fieldOffset, fieldType] (заполняется во время инициализации из "config", определенного в производном классе).
  2. Устанавливает PyTypeObject.tp_getattro и PyTypeObject.tp_setattro для функций, которые ищут данные с помощью словаря.

Это решение довольно медленное, так как поля нужно искать по имени. Есть ли способ лучше? Можно ли как-то использовать slots для решения этой проблемы (возможно, с использованием сгенерированного кода)?

...