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は、this
とself
そして彼は、Smalltalkの用語ではなくSimulaの用語を選ぶことにしました。