Pythonでは、モジュールのプライベート関数または変数の名前は_foo
です。それがクラスにプライベートである場合、それは名前__foo
です。これらの動作の背後にあるメカニズムは異なりますが、それは質問にはほとんど関係がありません。
Python言語の設計中に、クラスのプライベートメンバー用に2つの下線文字が選択されたのはなぜですか?モジュールprivateのように、単一の下線を付けないのはなぜですか?なぜもっと目立つ他のキャラクターがいないのですか?(_と__の区別は難しい)。
ここにはある程度の歴史があると思いますが、見つけるのに苦労しています。なぜなら、なぜそれがそうであるのかではなく、それが何を意味するのかを説明するチュートリアルだからです。
歴史を知るだけで、それが良い選択であったかどうかについての議論には興味がありません。
—
リンドンホワイト
シングルアンダースコアはモジュールプライベートのものではなく、クラスのプライベートメンバーにも使用されます。シングルアンダースコアとダブルアンダースコアの違いは名前のマングリングのみです。これは、多くの場合、クラスで不要または有害です。
「Pythonでは、モジュールのプライベート関数または変数の名前は_foo ...です。」これは誤りです:python.org/dev/peps/pep-0008/#descriptive-naming-stylesを参照してください。一言で言えば、アンダースコアはスクレイピング規則であり、プライベートにすることはありません(メソッドは引き続き外部からアクセスできます)。
—
1