期待 __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
过去多啦不再A梦2017-05-18 10:52:54
test.py 文件改为
from base import *
print a
print b
print c
结果如下:
❯ python test.py ⏎
1
2
Traceback (most recent call last):
File "test.py", line 8, in <module>
print c
NameError: name 'c' is not defined