カプセル化と情報隠蔽

アクセス修飾子(public, protected, privateの考え方)

カプセル化とつながりの深い「情報隠蔽(じょうほういんぺい)」という考え方について、もう少し詳しく見ていこうね。

情報隠蔽は、カプセル化を実現するための具体的な方法の一つで、オブジェクトの中身を外から見えなくしたり、変更できないようにしたりすることだよ。他のプログラミング言語では、「アクセス修飾子(アクセスしゅうしょくし)」という特別な言葉を使って、これをはっきりと区別するんだ。

主なアクセス修飾子には、次の3つがあるよ。

  1. Public(パブリック)

    これは「どこからでも自由にアクセスできる」という意味だよ。クラスの外からでも、中にいる他のクラスからでも、どんな場所からでも、この情報を見たり変えたりできるんだ。Pythonでは、変数名やメソッド名に何もつけない場合、ほとんどがPublicとして扱われるよ。

  2. Protected(プロテクテッド)

    これは「自分自身と、自分を継承した子クラスからだけアクセスできる」という意味だよ。友達家族とだけ共有できる秘密のパスワードみたいなイメージだね。Pythonでは、変数名やメソッド名の頭にアンダースコアを一つ(_つけることで、これがProtectedなものだということを「みんなへのお知らせ」として表すんだ。プログラムとしてはアクセスできるけど、「直接触らないでね」というルールだよ。

            
            class MyClass:
                def _protected_method(self):
                    print("これは保護されたメソッドだよ。")
            
            
  3. Private(プライベート)

    これは「自分自身からしかアクセスできない」という意味だよ。誰にも教えない、自分だけの秘密のパスワードみたいなものだね。Pythonでは、変数名やメソッド名の頭にアンダースコアを二つ(__つけることで、これがPrivateなものだということを表すんだ。これは、Pythonが名前を少し変える(名前マングリングというよ)ことで、外からアクセスしにくくする仕組みなんだ。

            
            class MyClass:
                def __private_method(self):
                    print("これはプライベートなメソッドだよ。")
            
            

他のプログラミング言語では、これらのアクセス修飾子を強制的に守らせる仕組みがあるけれど、Pythonは「みんながプログラマーとして常識的に振る舞うだろう」という考え方なんだ。だから、___がついているものを見たら、「これは直接触らずに、決められた方法で使った方が安全だな」って思ってね。

情報隠蔽は、プログラムを安全に、そして分かりやすく保つための、とても大切なルールなんだよ。