实际现象
期待
__all__
能控制模块的访问按照社区契约, 私有的东西以
_
开头, 但是最近发现有个同事调私有接口(我写的模块)Python是灵活的语言, 不成文的规定是「约定大于配置」
预期现象
搜索了
__all__
的资料, 还以为能满足我的要求, 但是完全不能( 见下文 )
问题
那么, __all__
好像一点用处都没有?
相关代码
base.py
__all__ = ('a', 'b', )
a = 1
b = 2
c = 3 # 不希望别人访问
test.py
import base
print(base.c)
输出
3
环境
Python 2.7
test.py 文件改为
结果如下: