2024-04-20 07:41:37 发布
网友
在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是如何完全合法的?什么样的把戏能提供这个? 谢谢。在
初始化子类Structure类的实例时,它将读取_fields_,并基于该列表中的字段名关联属性。
Structure
_fields_
这些都是用C语言完成的,所以如果您想确切地了解它是如何完成的,那么您需要使用源代码,特别是Struct_type的定义,以及_init_pos_args函数https://github.com/python/cpython/blob/master/Modules/_ctypes/_ctypes.c#L4021
Struct_type
_init_pos_args
初始化子类
Structure
类的实例时,它将读取_fields_
,并基于该列表中的字段名关联属性。这些都是用C语言完成的,所以如果您想确切地了解它是如何完成的,那么您需要使用源代码,特别是
Struct_type
的定义,以及_init_pos_args
函数https://github.com/python/cpython/blob/master/Modules/_ctypes/_ctypes.c#L4021相关问题 更多 >
编程相关推荐