クラスは、その属性の1つを外部アクセスからどの程度「保護」できますか?
たとえば、従来の_secret
属性を持つクラスでは、元の値に簡単にアクセスできます。
class Paranoid(object):
def __init__(self):
self._secret = 0
def set(self, val):
self._secret = val * 10
def get(self):
return self._secret / 10
p = Paranoid()
p.set(123)
print p.get() # 123
print p._secret # 1230, should be inaccessible
_secret
アクセスをより困難にするにはどうすればよいですか?
これには実用的なアプリケーションはありません。アクセスをより困難にする新しい方法があるかどうかだけが気になります(Pythonのコンテキスト内で-たとえば、デバッガーをPythonプロセスに接続して、メモリを検査できるという事実を無視します)。