オブジェクトを作成するときは、APIを作成しています。あなたは、そのオブジェクトの属性と外部世界と対話できるメソッドを提供しています。 car.drive()
horse.color
など
実際には、クラスの実装では、クラスを動作させるために特に多くのメソッドを作成する必要があり、この公開APIの一部ではありません。たぶんあなたは "ホーク"と呼ばれるメソッドが必要かもしれませんが、自分のコード内以外のどこでも使用されることは望ましくありません。
私たちが「私的」であると考えるこれらの内部的な方法です。いくつかのプログラミング言語は、公的または私的な方法を作るための正式な構造を持っています。 Pythonはそうではありません。しかし、慣例により、アンダースコアで始まるメソッドと属性はプライベートとして扱われるべきです。
ほとんどすべての経験豊富なPythonプログラマーは、アンダースコアを持つメソッドを見ると、クラス定義の外のどこからでも呼び出さないことを知っています。彼らははですが、通常はそうではありません。
なぜあなたはプライベートであることを望みますか? 1つの理由は、コードが変更されることです。パラメータを追加し、パラメータを削除し、アルゴリズムを変更します。パブリックインターフェイスは、作成されると通常はあまり変更されないものです。それに追加することはできますが、通常は大きな変更は行いません。
コードの他の部分がこれらの機能を呼び出すかもしれないということを気にせずに、プライベートメソッドを自由に変更することができます。
プライベートメソッドがPythonに存在しません – eyllanesc
何ですか?私はこれについて自分の馬鹿を笑うつもりです。私が使っている本は公的方法と私的方法について話していますが、それらは存在しません。 –
これらは条約としてのみ存在します。先頭のアンダースコア(例えば、 'def _foo(self、...)')を使って名前を付けると、ほとんどのPythonプログラマはそれらを非公開だとみなします。実際にはそうではありませんが、大会ではあたかもそうであるかのように扱います。 –