カプセル化とつながりの深い「情報隠蔽(じょうほういんぺい)」という考え方について、もう少し詳しく見ていこうね。
情報隠蔽は、カプセル化を実現するための具体的な方法の一つで、オブジェクトの中身を外から見えなくしたり、変更できないようにしたりすることだよ。他のプログラミング言語では、「アクセス修飾子(アクセスしゅうしょくし)」という特別な言葉を使って、これをはっきりと区別するんだ。
主なアクセス修飾子には、次の3つがあるよ。
これは「どこからでも自由にアクセスできる」という意味だよ。クラスの外からでも、中にいる他のクラスからでも、どんな場所からでも、この情報を見たり変えたりできるんだ。Pythonでは、変数名やメソッド名に何もつけない場合、ほとんどがPublicとして扱われるよ。
これは「自分自身と、自分を継承した子クラスからだけアクセスできる」という意味だよ。友達家族とだけ共有できる秘密のパスワードみたいなイメージだね。Pythonでは、変数名やメソッド名の頭にアンダースコアを一つ(_
)つけることで、これがProtectedなものだということを「みんなへのお知らせ」として表すんだ。プログラムとしてはアクセスできるけど、「直接触らないでね」というルールだよ。
class MyClass:
def _protected_method(self):
print("これは保護されたメソッドだよ。")
これは「自分自身からしかアクセスできない」という意味だよ。誰にも教えない、自分だけの秘密のパスワードみたいなものだね。Pythonでは、変数名やメソッド名の頭にアンダースコアを二つ(__
)つけることで、これがPrivateなものだということを表すんだ。これは、Pythonが名前を少し変える(名前マングリングというよ)ことで、外からアクセスしにくくする仕組みなんだ。
class MyClass:
def __private_method(self):
print("これはプライベートなメソッドだよ。")
他のプログラミング言語では、これらのアクセス修飾子を強制的に守らせる仕組みがあるけれど、Pythonは「みんながプログラマーとして常識的に振る舞うだろう」という考え方なんだ。だから、_
や__
がついているものを見たら、「これは直接触らずに、決められた方法で使った方が安全だな」って思ってね。
情報隠蔽は、プログラムを安全に、そして分かりやすく保つための、とても大切なルールなんだよ。