期待 __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 文件改为
结果如下:
在Python中没有什么是真正私有的