Python扩展与嵌入的综合指南
1. 利用Python的C API扩展Python
在Python开发中,有时需要借助C API来扩展Python的功能。不过,循环垃圾回收和支持弱引用这类高级主题暂不展开。
在定义类型时, tp_doc 字段是一个以空字符结尾的字符串,作为类型的文档字符串。其他字段会指向结构体,这些结构体的字段又指向函数。若不支持某类函数,可将对应字段设为 NULL 。以下是一些指向函数块的字段及其用途:
| 字段 | 用途 |
| ---- | ---- |
| tp_as_number | 通常由数字类型提供的特殊方法 |
| tp_as_sequence | 通常由序列类型提供的特殊方法 |
| tp_as_mapping | 通常由映射类型提供的特殊方法 |
| tp_as_buffer | 缓冲区协议的特殊方法 |
以字典为例,它虽不是序列,但支持 __contains__ 特殊方法。在C代码层面,该方法是 tp_as_sequence 指向的 PySequenceMethods 结构体中 sq_contains 字段所指向的函数。所以,字典类型的 PyTypeObject 结构体( PyDict_Type )的 tp_as
超级会员免费看
订阅专栏 解锁全文
2366

被折叠的 条评论
为什么被折叠?



