web-dev-qa-db-ja.com

pythonメソッドの最初のパラメーターの名前として、「this」より「self」が選ばれたのはなぜですか?

Pythonでクラスメソッドを定義するときに、selfではなくthisという名前を選択した理由は何でしたか?

はい、もちろん、好きな名前を付けることができますが、広く合意されている最初のパラメータの名前はselfです。

_:_がブロックステートメントの行の最後に追加された理由を説明するRobert Dewarについて article があったため、私は尋ねます(例:_if foo:_、def foo():)、彼の妻カリンは受動的にそれを見て、それなしでは読めなかったと述べました。ですから、GuidoやPythonコミュニティがselfよりもthisを選択するための同様の説明があるのだろうかと思いました。

selfの使用は、最古の1つである Smalltalk まで遡ることができますOO言語( = python wiki )およびpython言語デザイナーに影響を与えた:

  • Smalltalkバイトコードによって初期のPythonバイトコードに触発されたため、 Guido Van Rossum の直接的な影響の証拠があります(26ページの脚注9を参照- この記事 ):

  • 明示的なselfのModula-3の起源を参照する pythonのドキュメント に間接的な影響があるという証拠もあります Modula-3が影響を受けている Smalltalkはそのオブジェクトの継承モデルであり、 Niklaus Wirth について語っていません。Smalltalkが発明されたXerox Parcで2年間過ごしたModulaの精神的な父親です。

Smalltalkはselfではなくthisを使用しました。 superも使用しました。その言語では、ケイはおそらくselfを選択しました。その理由は、メッセージパッシングパラダイムのためです。メッセージをselfに送信するよりもthisに送信する方がセマンティクスを反映します。

Java継承された)thisのC++の伝統は、THISを使用した Simula 言語まで遡ります。参考資料(本の「 C++の設計と進化Bjarne Stroustrup による36ページ)を参照)。興味深いことに、Stroustrupは、thisselfそして彼は、Smalltalkの用語ではなくSimulaの用語を選ぶことにしました。

18
Christophe