2017-04-06 12 views
-5

私は数ヶ月間Python 3でプログラミングを学ぼうとしていましたが、私はクラスにつきました。特にプライベートとパブリックメソッド。pythonのプライベートメソッドとパブリックメソッドは何のために使われていますか?

私が理解していないことは、私的な方法が何であるかです。パブリックメソッドには、ユーザー/プログラムが直接アクセスできることを理解しています。しかし、私はプライベートメソッド、それが何であるか、そしてなぜそれらが存在するのか理解できません。

私はStackoverflowに関する研究をしっかりしましたが、私の質問に答えられるものは何も見つかりませんでした。ですから、これが複製であれば、私は事前に謝罪します。

+0

プライベートメソッドがPythonに存在しません – eyllanesc

+0

何ですか?私はこれについて自分の馬鹿を笑うつもりです。私が使っている本は公的方法と私的方法について話していますが、それらは存在しません。 –

+3

これらは条約としてのみ存在します。先頭のアンダースコア(例えば、 'def _foo(self、...)')を使って名前を付けると、ほとんどのPythonプログラマはそれらを非公開だとみなします。実際にはそうではありませんが、大会ではあたかもそうであるかのように扱います。 –

答えて

0

プライベートメソッドは、自分のクラスでのみ使用され、他の場所で呼び出されることはありません。それが提供する目的はencapsulationです。

+0

これは理にかなっています。なぜ私が使っている本で説明されていなかったのか分かりません。どうもありがとうございました! –

3

オブジェクトを作成するときは、APIを作成しています。あなたは、そのオブジェクトの属性と外部世界と対話できるメソッドを提供しています。 car.drive()horse.colorなど

実際には、クラスの実装では、クラスを動作させるために特に多くのメソッドを作成する必要があり、この公開APIの一部ではありません。たぶんあなたは "ホーク"と呼ばれるメソッドが必要かもしれませんが、自分のコード内以外のどこでも使用されることは望ましくありません。

私たちが「私的」であると考えるこれらの内部的な方法です。いくつかのプログラミング言語は、公的または私的な方法を作るための正式な構造を持っています。 Pythonはそうではありません。しかし、慣例により、アンダースコアで始まるメソッドと属性はプライベートとして扱われるべきです。

ほとんどすべての経験豊富なPythonプログラマーは、アンダースコアを持つメソッドを見ると、クラス定義の外のどこからでも呼び出さないことを知っています。彼らはですが、通常はそうではありません。

なぜあなたはプライベートであることを望みますか? 1つの理由は、コードが変更されることです。パラメータを追加し、パラメータを削除し、アルゴリズムを変更します。パブリックインターフェイスは、作成されると通常はあまり変更されないものです。それに追加することはできますが、通常は大きな変更は行いません。

コードの他の部分がこれらの機能を呼び出すかもしれないということを気にせずに、プライベートメソッドを自由に変更することができます。

+0

私は2つの答えを受け入れることはできません。これはプライベートメソッドが非常にうまくいくかを説明します。 @ブライアンオークリーもありがとうございます –

+0

@スティーブTあなたはいつでもアップを投票できます。あなたが選んだ答えは、あなたを最も助けてくれたものです。しかし、他の回答に投票して、彼らが良いことを示すこともできます。 –

+0

私はそれをアップ票しようとしました。しかし、私は十分な担当者を持っていません。 –

関連する問題