3

我来自 c++ 和 java 背景,所以我很想知道 python 是否提供 c++/java 提供的访问说明符。我看过一些代码,这就是我的想法,__variable ---> private。_variable ----> 受保护。如我错了请纠正我。

4

2 回答 2

3

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.

于 2013-08-09T08:02:34.440 回答
1

Python中没有这样的概念。有一些约定被使用——比如史蒂夫提到的那些,还有其他的,比如调用实例方法的第一个变量self

此外,对于模块级导入 - 有一种方法可以防止从模块导入所有名称的默认行为。这是通过填充__all__默认情况下应导入(公开)的名称列表来完成的。

然而,和它一样__var_var它只是一种约定(尽管是由 Python 强制执行的)。但它不会限制您 - 您可以显式导入任何名称。

于 2013-08-09T08:09:07.183 回答