在Python中动态定义/更新ctypes结构

在Python中动态定义/更新ctypes结构,python,python-3.x,ctypes,python-2.x,Python,Python 3.x,Ctypes,Python 2.x,我已经在ctypes中创建了子结构和结构,如下所示,其中我定义了一个具有预定义大小的结构内部的子结构数组。根据需求,尺寸最初可设置为0,并可根据用户输入而变化 从ctypes导入* 类MySubstructure结构: _字段=[ 子现场1,c\U uint32, sub_field2,c_uint32 ] 类别结构: 尺寸=2 _字段=[ 现场1,c_uint32, 现场2,c_uint32, 子结构字段、阵列子结构、大小、, ] 我的目标是根据用户输入修改这个子结构 为了实现同样的目标,我尝

我已经在ctypes中创建了子结构和结构,如下所示,其中我定义了一个具有预定义大小的结构内部的子结构数组。根据需求,尺寸最初可设置为0,并可根据用户输入而变化

从ctypes导入* 类MySubstructure结构: _字段=[ 子现场1,c\U uint32, sub_field2,c_uint32 ] 类别结构: 尺寸=2 _字段=[ 现场1,c_uint32, 现场2,c_uint32, 子结构字段、阵列子结构、大小、, ] 我的目标是根据用户输入修改这个子结构

为了实现同样的目标,我尝试了以下选项,但没有成功:

在初始化实例时定义uu init uuu方法并更新u字段

初始化实例后更新_字段u

对于这两个选项,我都试图附加sub_structure_字段,通过索引访问只更新大小值

最后,我只需要一个变通方法,这样我就可以在另一个结构中使用结构数组,或者在运行时初始化,或者在运行时修改

数组大小必须在定义_字段u时已知。您可以有一个工厂函数来定义类并返回它

script0.py:

!/usr/bin/env蟒蛇3 导入系统 导入ctypes 类子结构类型。结构: _字段=[ 子字段1,ctypes.c_uint32, 子字段2,ctypes.c_uint32, ] def结构_工厂尺寸: 类DynamicStructurectypes。结构: _字段=[ 字段1,ctypes.c_uint32, 字段2,ctypes.c_uint32, 子结构字段,ctypes.ARRAYSubStructure,尺寸,第二个元素等效于子结构*尺寸 ] 返回动态结构 def主: Struct2=结构\工厂2 Struct5=结构\工厂5 printStruct2.sub_结构_字段 printStruct5.sub_结构_字段 如果uuuu name uuuuu==\uuuuuuuu main\uuuuuuuu: sys.version.split中项目的{2:s}\n.format.joinitem.strip上的printPython{0:s}{1:d}位\n,如果sys.maxsize>0x100000000,则为64,否则为32,sys.platform 主要的 打印\n一张。 输出:

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057417435]>e:\Work\Dev\VEnvs\py\u 064\u 03.07.03\u test0\Scripts\python.exe script0.py Python 3.7.3 v3.7.3:ef4ec6ed12,2019年3月25日,22:22:05[MSC v.1916 64位AMD64]win32上的64位 完成。 你也可以看看