dbr*_*dbr 2 python encapsulation private-members
一个类在多大程度上可以"保护"其中一个属性来自外部访问?
例如,具有常规_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
Run Code Online (Sandbox Code Playgroud)
如何使访问_secret变得更加困难?
对此没有实际的应用,我只是好奇是否有新的方法使其更难访问(在Python的上下文中 - 所以忽略了你可以把调试器附加到Python进程并检查内存的事实)
你可能正在寻找吸气剂和二传手.稍微不那么复杂的方法是使用__secret,它将调用名称修改来将其转换为_Paranoid__secret.
但是,是的,我应该注意到python社区并不像某些语言那样真正重视隐私.或者俗话说我们都在这里同意成年人.