我来自 c++ 和 java 背景,所以我很想知道 python 是否提供 c++/java 提供的访问说明符。我看过一些代码,这就是我的想法,__variable ---> private。_variable ----> 受保护。如我错了请纠正我。
2 回答
Python has recommended practices rather than prescriptive ones - so anything with a _
at the start should be left alone by others but is not locked to prevent it. There is however name mangling to make life more interesting for members with a __
at the start - see PEP8.
Of course if others rely on your private data/methods rather then the public API they only have themselves to blame when you change something and their code stops working.
Python中没有这样的概念。有一些约定被使用——比如史蒂夫提到的那些,还有其他的,比如调用实例方法的第一个变量self
。
此外,对于模块级导入 - 有一种方法可以防止从模块导入所有名称的默认行为。这是通过填充__all__
默认情况下应导入(公开)的名称列表来完成的。
然而,和它一样__var
,_var
它只是一种约定(尽管是由 Python 强制执行的)。但它不会限制您 - 您可以显式导入任何名称。