一个类可以在多大程度上“保护”它的一个属性免受外部访问?
比如一个类,有一个常规的_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 进程的事实,并且检查内存)
最佳答案
您可能正在寻找 getters and setters .一种不太复杂的方法是使用 __secret
,它将调用名称重整以将其转换为 _Paranoid__secret
。
但是,是的,我应该注意到 python 社区并不像某些语言那样真正重视隐私。或者俗话说 we're all consenting adults here .
关于python - 防止在 Python 中访问 "private"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10502265/