В omniORBpy, есть ли способ автоматически инициализировать все члены структуры для правильного типа? - PullRequest
1 голос
/ 05 апреля 2019

Я пишу скрипт для запуска различных удаленных тестов, и одно из значений, которое мне нужно получить, входит в большую структуру, которая в настоящее время имеет 38 членов.IDL имеет структуру в качестве параметра «inout» для функции, чтобы получить эти данные:

long GetCartridgeInfo(inout CartridgeInfo cartridgeInfo );

Проблема в том, что иногда члены добавляются или удаляются, и я не хочу обновлять своисценарий только потому, что кто-то решил вставить новый фрагмент данных в структуру.Есть ли способ создать экземпляр этого класса структуры без необходимости заполнения каждого из 38 членов?Мне просто нужно что-то передать функции, которая не вызывает omniORB.BAD_PARAM_WrongPythonType.

Структура имеет все виды различных типов, поэтому я не могу просто сделать что-то вроде:

initArgs = [0] * 38
info = _GlobalIDL.CartridgeInfo(*initArgs)

Это выглядит примерно так:

initArgs = [0]*4 + ["0"*16] + ["0"] + ["0"*16] + ["0"*36] + [0]*2 + ["0"*16] + [0]*3 + ["0"*30] + [0.0] + [0]*13 + ["0"*16] + [0]*4 + ["0"*8]
info = _GlobalIDL.CartridgeInfo(*initArgs)

Я хочу сделать это без статического определения initArgs:

info = _GlobalIDL.CartridgeInfo(*initArgs)
res = self.orb.GetCartridgeInfo(info)
material = res[1].materialDisplayName
...