AttributeError: _fields_ is final (in python)

AttributeError: _fields_ is final (in python)

在使用 ctypes 编写 python 脚本时,出现错误:AttributeError: fields is final

//demo.h
typedef struct data
{
 char * status;
}

//python script
import ctypes 
import sys
from ctypes import *

class data(Structure):pass
data._fields_ = [('Status',POINTER(c_char))]

因此,我特此展示了 .h 文件中的结构以及我在 python 中使用 ctypes 定义相同结构的方式。 任何人都可以建议我解决问题的方法吗?

您不能更改 Structure_fields_ 属性,如果它已经被分配,它应该可以工作。例如。尝试做:

class data(Structure):
    _fields_ = []

data._fields_ = [('Status',POINTER(c_char))]

会失败 AttributeError: _fields_ is final

同时创建 class 的实例会导致 _fields_ 成为最终的,因此

    class data(Structure): pass
    d = data()
    data._fields_ = [('Status',POINTER(c_char))]

也会导致同样的错误。

我假设在真实代码中尝试过类似的事情。