我想知道pythons列表类型的__setitem__和__getitem__代码是在哪里定义的。我知道列表是用 C 实现的,但是我找不到实现列表的索引和切片操作的代码。
2 回答
4
您会在listobject.c文件中找到所有内容。
它的方法在list_methods()结构中被列举。您可能还想研究PyList_Type结构,以获取指向各种钩子实现的更多指针。
由于__getitem__和__setitem__都是C 序列协议的一部分,因此该PyList_Type结构指向一个定义这些钩子的新结构,list_as_sequence列在.tp_as_sequencePyList_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 回答