1

__setitem__pythonsリストタイプのと__getitem__コードがどこで定義されているのか知りたいのですが。リストがCで実装されていることは知っていますが、リストのインデックス作成とスライス操作を実装しているコードが見つかりません。

4

2 に答える 2

4

listobject.cファイルにはすべてが含まれています。

list_methods()そのメソッドは構造体に列挙されています。また、さまざまなフックの実装へのさらなるポインターのPyList_Type構造を研究することもできます。

__getitem____setitem__は両方のCシーケンスプロトコルの一部であるため、構造体は、のスロットにリストされている、これらのフックを定義PyList_Typeする新しい構造体を指します。list_as_sequencetp_as_sequencePyList_Type

list_item関数__getitem__フックを実装し、__setitem__で表されlist_ass_itemます。

一方、スライスはマッピングプロトコルによって処理され、最終的にはとになりlist_as_mappingます。list_subscriptlist_ass_subscript

于 2012-10-24T16:57:19.140 に答える
2

ファイルを見てくださいlistobject.c...私は今日、あなたが探している多くのものを指し示す答えを追加しました

于 2012-10-24T16:56:33.557 に答える