Python(クラスの非公開メンバ)

クラス定義をする場合、 公開して外部から利用してもらいたいものとクラス内部でのみ利用したいものというように、秘密にしておきたい機能があります。
C/C++/C#ではクラス定義を行う場合、アクセス修飾詞をつけてpublic(外部からも参照可能),protected(継承先から参照可能),private(このクラス内のみ参照可能)というオブジェクト指向の「カプセル化」を行います。
Pythonでは完全な隠蔽処理をサポートしていませんが、暗黙のルールとしてメソッド名や変数名に(アンダーバー)を1つ付けているものは非公開メンバであり、クラスの設計者だけが使うもので、クラスの利用者は、それを利用しない決まりです。
しかし、暗黙のルールなので、実際、クラスの利用者も _(アンダーバー)1つのものを操作することができてしまいます。
それでは困る場合があるので、クラスの利用者から要素を隠すために「マングリング」という機能が用意されており、これは要素名の前に__(アンダーバー2つ)をつけることで要素名が自動的に「
クラス名__要素名」と置換され、ある程度、クラス利用者から属性を隠すことができます。
また、この機能はクラスの継承を利用するとき、メソッド名が被らないようにする際に役立ち、基底クラスのメソッドをオーバーライドされたくない場合、 __(アンダーバー2つ)で定義するようにしましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Python

次の記事

Python(抽象基底クラス)