<p>从Python文档中:</p>
<blockquote>
<p>There is a convention that is followed by most Python codes: a name
prefixed with an underscore (e.g. _spam) should be treated as a
non-public part of the API (whether it is a function, a method or a
data member).</p>
</blockquote>
<p>有关详细信息,请参见:<a href="https://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references" rel="nofollow">https://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references</a>。你知道吗</p>
<p>由于基于Java的类通常“隐藏”它们的字段(通过使其私有化),并为这些字段提供公共getter/setter,因此可以使用该约定在Python中实现这一点:</p>
<pre><code>class Foo(object):
def __init__ (self, fooName):
self.setFooName(fooName)
def setFooName(self, fooName):
self.__fooName = fooName
def getFooName():
return self.__fooName;
class Bar(object) :
def __init__(self, barName, foo) :
self.setBarName(barName)
self.setFoo(foo)
def setBarName(self, barName) :
self.__barName = barName
def getBarName(self) :
return self.__barName
def setFoo(self, foo) :
self.__foo = foo;
def getFoo(self) :
return self.__foo;
foo = Foo("foo")
bar = Bar("bar", foo)
print bar.getBarName()
print type(bar.getFoo())
# print bar.__barName -> this will return error as the variable is considered "private"
</code></pre>