python中的访问说明符是什么?

What are the access specifiers in python?

本问题已经有最佳答案,请猛点这里访问。

我来自C++和Java背景,所以我很想知道Python是否提供了C++/Java提供的访问说明符。我看过一些代码,这就是我想的,_变量--->private。_变量---->受保护。如果我错了就纠正我。


在Python中没有这样的概念。有一些约定被使用,如steve提到的约定,也有一些约定,如调用实例方法self的第一个变量。

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

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


python推荐的是实践,而不是规范性的实践——所以在开始时使用_的任何东西都应该由其他人单独使用,但不会被锁定以防止发生这种情况。然而,有一个名称的混乱,使生活更有趣的成员与__在开始-见pep8。

当然,如果其他人依赖于您的私有数据/方法,而不是公共API,那么他们只有在您更改某些内容并且代码停止工作时才怪自己。