文章詳情頁
Python 的 __all__ 為什么不能防止「不被導(dǎo)出的內(nèi)容, 就不能訪問」?
瀏覽:98日期:2022-07-18 13:35:20
問題描述
實(shí)際現(xiàn)象期待 __all__ 能控制模塊的訪問
按照社區(qū)契約, 私有的東西以_開頭, 但是最近發(fā)現(xiàn)有個同事調(diào)私有接口(我寫的模塊)
Python是靈活的語言, 不成文的規(guī)定是「約定大于配置」
預(yù)期現(xiàn)象搜索了 __all__的資料, 還以為能滿足我的要求, 但是完全不能( 見下文 )
問題那么, __all__好像一點(diǎn)用處都沒有?
相關(guān)代碼base.py
__all__ = (’a’, ’b’, )a = 1 b = 2 c = 3 # 不希望別人訪問
test.py
import base print(base.c)
輸出
3環(huán)境
Python 2.7
問題解答
回答1:test.py 文件改為
from base import *print aprint bprint c
結(jié)果如下:
? python test.py ?12Traceback (most recent call last): File 'test.py', line 8, in <module> print cNameError: name ’c’ is not defined回答2:
在Python中沒有什么是真正私有的
排行榜

熱門標(biāo)簽