Pythonのクラス内で「プライベート」変数を定義する方法
Pythonでは、クラス内でプライベート変数を定義するために、変数名の前にアンダースコア(_)をつける慣習があります。これにより、外部から直接アクセスされることを防ぎ、変数をクラス内でのみ利用できるようにします。
サンプルコード1:
class MyClass: def __init__(self): self._private_var = 10 obj = MyClass() print(obj._private_var) # 直接アクセス可能
上記のコードでは、_private_var
というプライベート変数を定義し、クラス内外からアクセスできるか確認しています。しかし、Pythonでは名前修飾を厳密に強制しないため、外部からもアクセスできてしまいます。
サンプルコード2:
class MyClass: def __init__(self): self.__private_var = 10 obj = MyClass() print(obj.__private_var) # エラーが発生する
より強固なプライベート変数を定義するには、変数名の前に二重アンダースコア(__)をつけます。これにより、Pythonは変数名をマングリング(名前修飾)して外部からアクセスできないようにします。
サンプルコード3:
class MyClass: def __init__(self): self.__private_var = 10 def get_private_var(self): return self.__private_var obj = MyClass() print(obj.get_private_var()) # メソッドを介してアクセス
プライベート変数を使用する利点は、情報隠蔽とカプセル化を実現し、クラスの内部実装を外部から隠蔽することです。これにより、クラスの安全性や保守性が向上し、外部からの誤った操作や依存関係の混乱を防ぐことができます。
Pythonには、クラス内で「プライベート」変数を定義する方法があります。Pythonでは、変数名の前にアンダースコア(_)を2つ付けることで、その変数をプライベート変数として扱うことができます。例えば、以下のようにクラス内でプライベート変数を定義することができます。
“`python
class MyClass:
def __init__(self):
self.__private_var = 10def get_private_var(self):
return self.__private_varmy_object = MyClass()
print(my_object.get_private_var()) # 出力: 10
“`上記の例では、`__private_var`というプライベート変数をクラス内で定義しています。外部からは直接アクセスできないため、`get_private_var`メソッドを介して値を取得しています。これにより、クラス内での情報隠蔽やデータのカプセル化が可能となります。