ctypes位域是如何工作的?

2024-04-20 07:41:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在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是如何完全合法的?什么样的把戏能提供这个? 谢谢。在


Tags: fromimportfieldsctypesstructureclassintpoint
1条回答
网友
1楼 · 发布于 2024-04-20 07:41:37

初始化子类Structure类的实例时,它将读取_fields_,并基于该列表中的字段名关联属性。

这些都是用C语言完成的,所以如果您想确切地了解它是如何完成的,那么您需要使用源代码,特别是Struct_type的定义,以及_init_pos_args函数https://github.com/python/cpython/blob/master/Modules/_ctypes/_ctypes.c#L4021

相关问题 更多 >