使用ctypes我定义了以下类:
class ListOfVariables(Structure):
_fields_ = [
("name0", c_int),
("name1", c_int),
("name2", c_int)
]
是否可以在运行时向成员'字段'添加一个元素? 这样我们就可以用以下方式定义一个新变量,例如:
cstructA = ListOfVariables(1,2,3,4)
甚至是其他类型:
cstructB = ListOfVariables(1,2,3,'b')
在动态修改类之后,必须使用新的参数调用构造函数。
答案 0 :(得分:1)
你不能这样做,因为结构应该是一个C结构---一个固定大小的字节,具有固定的元素偏移量。您无法动态更改C结构的布局。这意味着什么,例如已经创建的实例?
你可以动态地改变常规Python对象的布局,因为它们的实现恰好比简单的C结构更复杂。
根据您的需要,您可以创建ListOfVariables的子类:
class ListOfVariables2(ListOfVariables):
_fields_ = [('extra', c_int)]
这意味着你要定义另一个C结构,它是旧结构的扩展。