怎么样使用getattr http://docs.python.org/2/library/functions.html#getattr?
>>> from ctypes import *
>>>
>>> class S(Structure):
... _fields_ = [
... ('a', c_byte),
... ('b', c_int),
... ('c', c_float),
... ('d', c_double)
... ]
...
>>> s = S(1, 2, 3, 4.0)
>>>
>>> for field_name, field_type in s._fields_:
... print field_name, getattr(s, field_name)
...
a 1
b 2
c 3.0
d 4.0
UPDATE
如果结构体(或联合体)中有位域,则迭代_fields_
产生一个包含 3 个项目的元组,这将导致ValueError
。为了防止这种情况,您需要调整代码:
...
for field in s._fields_:
print field[0], getattr(s, field[0])