Python クラスの属性を保護する方法 - 最適な選択肢は?
Python でクラスの属性を保護するには、名前の前に '__' をつけるのが最適な方法です。
この方法は、名前マングリングと呼ばれるメカニズムを利用しています。
名前マングリングとは、Python インタープリタが、名前の前に '__' が付いた属性名を自動的に変更する処理です。
例えば、__name という属性名は、_ClassName__name のように変更されます。
これにより、外部から直接アクセスすることができなくなり、クラス内部でのみアクセス可能になります。
注意:
- 名前マングリングは、名前の前に '__' が付いた属性名に対してのみ適用されます。
- 名前マングリングされた属性には、クラス内部からでも
_ClassName__nameのように完全な名前でアクセスする必要があります。
例:
class MyClass:
def __init__(self):
self.__name = 'Alice'
my_object = MyClass()
# 属性にアクセスする
print(my_object._MyClass__name) # 出力: 'Alice'
# エラーが発生する
print(my_object.__name) # AttributeError: private access
この例では、__name 属性は名前マングリングされ、外部から直接アクセスすることができません。クラス内部から _MyClass__name を使用してアクセスすることができます。
その他の選択肢:
privateを指定する: Python にはprivateキーワードはありません。- 名前の前に ',' をつける: 無効なシンタックスです。
staticを指定する: 静的属性を定義しますが、アクセスを制限するものではありません。protectを指定する: Python にはprotectキーワードはありません。
結論:
Python でクラスの属性を保護する最も効果的な方法は、名前の前に '__' をつける方法です。これにより、名前マングリングによって属性へのアクセスを制限することができます。
原文地址: https://www.cveoy.top/t/topic/kEMa 著作权归作者所有。请勿转载和采集!