可能重复:The meaning of a single- and a double-underscore before an object name in Python
对于Python中的私有成员和方法,我应该使用_foo
(下划线)或__bar
(双下划线?)>
可能重复:Python中对象名称之前的单下划线和双下划线的含义,对于私有成员,我应该使用_foo(下划线)或__bar(双下划线),并且...]]
[请注意,Python中没有“私有方法”之类的东西。双下划线只是名称修饰:
>>> class A(object):
... def __foo(self):
... pass
...
>>> a = A()
>>> A.__dict__.keys()
['__dict__', '_A__foo', '__module__', '__weakref__', '__doc__']
>>> a._A__foo()
双下划线。它以一种无法通过类外部通过__fieldName
进行简单访问的方式来处理名称,如果要私有,则要从此开始。 (尽管访问该字段仍然不是很困难。)
双下划线。那弄乱了名字。仍然可以访问该变量,但是这样做通常不是一个好主意。
因为那是编码约定。有关更多信息,请参见here。