Pythonには、クラス内で「プライベート」変数がありますか?

PYTHON3 チュートリアル

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 = 10

def get_private_var(self):
return self.__private_var

my_object = MyClass()
print(my_object.get_private_var()) # 出力: 10
“`

上記の例では、`__private_var`というプライベート変数をクラス内で定義しています。外部からは直接アクセスできないため、`get_private_var`メソッドを介して値を取得しています。これにより、クラス内での情報隠蔽やデータのカプセル化が可能となります。

購読
通知
0 Comments
Inline Feedbacks
View all comments