我想知道pythons列表类型的__setitem__
和__getitem__
代码是在哪里定义的。我知道列表是用 C 实现的,但是我找不到实现列表的索引和切片操作的代码。
问问题
395 次
2 回答
4
您会在listobject.c
文件中找到所有内容。
它的方法在list_methods()
结构中被列举。您可能还想研究PyList_Type
结构,以获取指向各种钩子实现的更多指针。
由于__getitem__
和__setitem__
都是C 序列协议的一部分,因此该PyList_Type
结构指向一个定义这些钩子的新结构,list_as_sequence
列在.tp_as_sequence
PyList_Type
该list_item
函数实现了__getitem__
钩子,__setitem__
并由 表示list_ass_item
。
另一方面,切片由映射协议处理,您最终会(通过list_as_mapping
)在list_subscript
和list_ass_subscript
。
于 2012-10-24T16:57:19.140 回答
2
看看文件listobject.c
......我今天早些时候添加了一个答案,它指向了你正在寻找的很多东西
于 2012-10-24T16:56:33.557 回答