我正在编写一个脚本来运行各种远程测试,我需要获得的值之一来自一个目前有 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