Python中的GetSetDescriptorType是什么?
我在查看types.py文件,想了解内置类型时,发现了一个叫GetSetDescriptorType的东西。根据Python文档的描述:
types.GetSetDescriptorType
这是在扩展模块中用PyGetSetDef定义的对象类型,比如FrameType.f_locals或array.array.typecode。这个类型用作对象属性的描述符;它的作用和属性类型一样,但适用于在扩展模块中定义的类。
我理解属性类型,但对这个GetSetDescriptorType有点搞不清楚。有没有懂这个的朋友能帮我解释一下?
1 个回答
2
当你用C语言编写一个Python模块时,你需要使用一个叫做C API的工具来定义新的数据类型。这个API里面有很多函数和结构体,可以帮助你指定新类型的各种行为。
使用C API来定义类型的属性,有一种方法是创建一个包含PyGetSetDef
结构体的数组:
static PyGetSetDef my_props[] = { /*... */ }
然后在初始化这个类型的时候使用这个数组(想了解更多细节,可以查看这个例子)。
接着,在Python中,当你使用MyType.my_property
时,它会返回一个types.GetSetDescriptorType
的值,这个值用来在你写my_obj.my_property
时获取实际的属性值。
所以说,这个类型其实是一个实现细节,可能并不是特别有用。