可能的重复:
Python 中对象名称前的单下划线和双下划线的含义 https://stackoverflow.com/questions/1301346/the-meaning-of-a-single-and-a-double-underscore-before-an-object-name-in-python
我在阅读关于私有变量的python文档时有一个问题link http://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references.
所以文档告诉我们,用下划线命名私有变量是一种约定,但 python 不会将该字段设为私有。
>>> class a():
def __init__(self):
self.public = 11
self._priv = 12
>>> b = a()
>>> print b._priv
>>> 12
我想知道是否有一种方法可以使 python 中的变量“真正”私有。
- 吉多·范罗森 (Guido van Rossum) 说道:我们都是成年人.
- 扩展版本:我们都是成年人了。如果必要的话,请随意搬起石头砸自己的脚。
你可以隐藏它a bit如果你必须这样做,但你真的不应该:
class NonAdult(object):
def __init__(self):
self.__private_number = '42'
def __getattr__(self, name):
if name.startswith('__private'):
raise AttributeError
if __name__ == '__main__':
na = NonAdult()
print(na.__private_number) # raises AttributeError
print(na.__dict__['_NonAdult__private_number']) # would still return 42
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)