ctypes位域如何真正起作用?

时间:2016-08-03 07:48:50

标签: python bit-fields

在python中,使用ctypes,以下是合法的:

from ctypes import *
class POINT(Structure):
    _fields_ = [("x", c_int),
     ("y", c_int)]

p = POINT(10,20)
sum = p.x + p.y

但这是如何运作的?我的意思是p.x是如何完全合法的?什么样的技巧提供了这个? 感谢。

1 个答案:

答案 0 :(得分:2)

当您初始化子类的实例Structure类时,它会读取_fields_并根据该列表中的字段名称关联属性。

这一切都在C中完成,因此如果您想确切了解它是如何完成的,您需要使用源,特别是Struct_type的定义和_init_pos_args函数{{ 3}}