python包私有變量__all__

python類,專欄總目錄

1.python面向對象編程class

2.python類多重繼承

3.python類私有變量

4.python包私有變量__all__

5.python類枚舉

 

1、python命名約定

1)所謂”內部(Internal)”表示僅模塊內可用, 或者, 在類內是保護或私有的;

2)用單下劃線(_)開頭表示模塊變量或函數是protected的(使用import * from時不會包含);

3)用雙下劃線(__)開頭的實例變量或方法表示類內私有;

4)將相關的類和頂級函數放在同一個模塊裏,沒必要限制一個類一個模塊;

5)對類名使用大寫字母開頭的單詞(如CapWords, 即Pascal風格), 但是模塊名應該用小寫加下劃線的方式(如lower_with_under.py)。

6)類以C開頭,枚舉以E開頭。

2、__all__

在模塊(*.py)中使用意爲導出__all__列表裏的類、函數、變量等成員,否則將導出模塊中所有不以下劃線開頭(私有)的成員,在模塊中使用__all__屬性可避免在相互引用時的命名衝突。

 只有在執行語句 from module import * 時,__all__屬性纔會起作用。此時所有枚舉的成員被import,而其他成員被私有化。

主要作用:在第一時間展現了模塊的內容大綱,而且也更清晰的提供了外部訪問接口。

2.1、在模塊(*.py)中使用意爲導出__all__列表裏的類、函數、變量等成員

modualA.py
#
__all__=["fun1","class1"]
...
#end file modualA.py

使用:

from modualA import *

導入模塊modualA裏的所有成員(如果定義了__all__那麼就導出列表中的所有,否則默認導出不以下劃線開頭的所有成員)

2.2、在包(假設pkgA,pkgA是一個文件夾)的__init__.py中意爲導出包裏的模塊

# pkgA/__init__.py
from modualA import class1,class2
from modualB import fun1,class3
....

使用:

from pkgA import *

以上語句即執行了pkgA下的__init__.py,導入兩個模塊,和這兩模塊下的函數和類。

3.3、私有變量導出

_開頭表示保護變量,__開頭表示私有變量

私有屬性默認是無法導出的,可以通過__all__加入該變量進行導出。

 

參考文章

1、python快速生成註釋文檔的方法

https://www.cnblogs.com/cookie1026/p/6093188.html

2、python裏__all__ 屬性分別於模塊和包之中的用法

http://blog.csdn.net/nivana999/article/details/39620673

3、 python中模塊的__all__屬性

http://blog.csdn.net/sxingming/article/details/52903377

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章