cpython列表类型的实现在哪里?

时间:2012-10-24 16:55:42

标签: python list cpython

我想知道定义了pythons列表类型的__setitem____getitem__代码的位置。我知道列表是用C实现的,但我找不到实现列表索引和切片操作的代码。

2 个答案:

答案 0 :(得分:4)

您会在listobject.c file中找到所有内容。

它的方法在list_methods() structure中列举。您可能还想研究PyList_Type structure以获得有关各种钩子实现的进一步指示。

由于__getitem____setitem__C sequence protocol的一部分,PyList_Type结构指向定义这些挂钩的新结构list_as_sequence,列在tp_as_sequence的{​​{1}}广告位。

list_item function实现PyList_Type挂钩,__getitem__list_ass_item表示。

另一方面,切片由映射协议处理,您最终会(list_as_mapping)在list_subscriptlist_ass_subscript处结束。

答案 1 :(得分:2)

查看文件listobject.c ...我添加了answer earlier today,指出了很多你想要的东西