Python定義クラスのプライベート属性

821 ワード

プライベート属性変数はオブジェクトの外部からアクセスできませんが、アクセサメソッドのみでアクセスできます.
class Secretive:
    def __inaccessible(self):
        print("Bet you can't see me ...")
    def accessible(self):
        print("The secret message is:")
        self.__inaccessible()
>>> s = Secretive()
>>> s.__inaccessible()
Traceback (most recent call last):
File "", line 1, in 
AttributeError: Secretive instance has no attribute '__inaccessible'
>>> s.accessible()
The secret message is:
Bet you can't see me ..

外部からアクセスできなくなりました_inaccessibleですが、クラス(accessibleなど)では依然として使用できます.
名前を変更したくない場合は、外部から属性やメソッドを変更しないように信号を出したい場合は、下線で頭を打つことができます.これはただの約束ですが、少し役に立ちます.たとえば、from module import*は下線で始まる名前をインポートしません.