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))]
也会导致同样的错误。
我假设在真实代码中尝试过类似的事情。
在使用 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))]
也会导致同样的错误。
我假设在真实代码中尝试过类似的事情。