0

使用 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')

在动态修改类之后,必须使用新数量的参数调用构造函数。

4

1 回答 1

1

你不能这样做,因为 Structure 应该是一个 C 结构 --- 以字节为单位的固定大小,元素的固定偏移量。您不能动态更改 C 结构的布局。例如,对于已经创建的实例,这意味着什么?

可以动态更改常规 Python 对象的布局,因为确切地说,它们的实现比简单的 C 结构更复杂。

根据您的需要,您可以创建 ListOfVariables 的子类:

class ListOfVariables2(ListOfVariables):
    _fields_ = [('extra', c_int)]

这意味着您正在定义另一个 C 结构,它是旧结构的扩展。

于 2012-12-20T21:41:55.373 回答