Python中的私有变量和方法[重复]

问题描述 投票:65回答:4

可能重复:The meaning of a single- and a double-underscore before an object name in Python

对于Python中的私有成员和方法,我应该使用_foo(下划线)或__bar(双下划线?)>

可能重复:Python中对象名称之前的单下划线和双下划线的含义,对于私有成员,我应该使用_foo(下划线)或__bar(双下划线),并且...]]

python private private-members private-methods double-underscore
4个回答
68
投票

[请注意,Python中没有“私有方法”之类的东西。双下划线只是名称修饰:

>>> class A(object):
...     def __foo(self):
...         pass
... 
>>> a = A()
>>> A.__dict__.keys()
['__dict__', '_A__foo', '__module__', '__weakref__', '__doc__']
>>> a._A__foo()

38
投票

双下划线。它以一种无法通过类外部通过__fieldName进行简单访问的方式来处理名称,如果要私有,则要从此开始。 (尽管访问该字段仍然不是很困难。)


9
投票

双下划线。那弄乱了名字。仍然可以访问该变量,但是这样做通常不是一个好主意。


-4
投票

因为那是编码约定。有关更多信息,请参见here

© www.soinside.com 2019 - 2024. All rights reserved.