cpython的list类型的实现在哪里?
Posted
技术标签:
【中文标题】cpython的list类型的实现在哪里?【英文标题】:Where is the implementation of cpython's list type? 【发布时间】:2012-10-14 18:33:29 【问题描述】:我想知道pythons列表类型的__setitem__
和__getitem__
code是在哪里定义的。我知道列表是用 C 实现的,但是我找不到实现列表的索引和切片操作的代码。
【问题讨论】:
【参考方案1】:您可以在listobject.c
file 中找到所有内容。
它的方法在list_methods()
structure 中列举。您可能还想研究PyList_Type
structure 以获得更多关于各种钩子实现的指针。
由于__getitem__
和__setitem__
都是C sequence protocol 的一部分,因此PyList_Type
结构指向定义这些挂钩的新结构list_as_sequence
,列在PyList_Type
的tp_as_sequence
槽中。
list_item
function 实现了__getitem__
钩子,__setitem__
由list_ass_item
表示。
另一方面,切片由映射协议处理,您最终会(通过list_as_mapping
)list_subscript
和list_ass_subscript
。
【讨论】:
【参考方案2】:查看文件listobject.c
...我添加了一个answer earlier today,它指向您正在寻找的很多东西
【讨论】:
以上是关于cpython的list类型的实现在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
在哪里可以找到 set.symmetric_difference 等内置类型方法的类型注释?