期待 __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