標籤:建議 訪問 之間 imp pascal 單詞 class write 異常
python源碼和其他一些書籍,命名各種個性,沒有一個比較統一的命名規範。於是總結了一些,供參考。
模組名:
模組應該使用儘可能短的、全小寫命名,可以在模組命名時使用底線以增強可讀性。同樣包的命名也應該是這樣的,雖然其並不鼓勵底線。
主要是考慮模組名是與檔案夾相對應的,因此需要考慮檔案系統的一些命名規則的,比如Unix系統對大小寫敏感,而過長的檔案名稱會影響其在Windows\Mac\Dos等系統中的正常使用。
通常是小寫字母,單詞之間用_分割
ad_stats.py
包名:
和模組名一樣
類名:
幾乎毫無例外的,類名都使用首字母大寫開頭(Pascal命名風格)的規範。使用_單底線開頭的類名為內部使用,from M import *預設不被匯入的情況。
單字首大寫
AdStats
ConfigUtil
全域變數名(類變數,在java中相當於static變數):
大寫字母,單詞之間用_分割
NUMBER
COLOR_WRITE
對於from M import *匯入語句,如果想阻止匯入模組內的全域變數可以使用舊有的規範,在全域變數上加一個前置的底線。
*注意*:應避免使用全域變數
普通變數:
小寫字母,單詞之間用_分割
this_is_a_var
*注意*:
1.不論是類成員變數還是全域變數,均不使用 m 或 g 首碼。
2.私人類成員使用單一底線首碼標識,多定義公開成員,少定義私人成員。
3.變數名不應帶有類型資訊,因為Python是動態類型語言。如 iValue、names_list、dict_obj 等都是不好的命名。
執行個體變數:
以_開頭,其他和普通變數一樣
_price
_instance_var
私人執行個體變數(外部存取會報錯):
以__開頭(2個底線),其他和普通變數一樣
__private_var
專有變數:
__開頭,__結尾,一般為python的自有變數,不要以這種方式命名
__doc__
__class__
普通函數:
和普通變數一樣:
get_name()
count_number()
ad_stat()
私人函數(外部存取會報錯):
以__開頭(2個底線),其他和普通函數一樣
__get_name()
檔案名稱:
全小寫,可使用底線
*注意*:混合大小寫僅被允許用於這種風格已經佔據優勢的時候,以便保持向後相容。
函數和方法的參數:
總使用“self”作為執行個體方法的第一個參數。總使用“cls”作為類方法的第一個參數。
如果一個函數的參數名稱和保留的關鍵字衝突,通常使用一個尾碼底線好於使用縮寫或奇怪的拼字。
常量:
常量名所有字母大寫,由底線串連各個單詞如MAX_OVERFLOW,TOTAL。
異常
因為異常也是一個類,所以遵守類的命名規則。此外,如果異常實際上指代一個錯誤的話,應該使用“Error”做尾碼。
縮寫
命名應當盡量使用全拼字的單詞,縮寫的情況有如下兩種:
1.常用的縮寫,如XML、ID等,在命名時也應只大寫首字母,如XmlParser。
2.命名中含有長單詞,對某個單詞進行縮寫。這時應使用約定成俗的縮寫方式。
例如:
function 縮寫為 fn
text 縮寫為 txt
object 縮寫為 obj
count 縮寫為 cnt
number 縮寫為 num,等。
前置尾碼底線總結
一個前置底線:表示非公有。
一個尾碼底線:避免關鍵字衝突。
兩個前置底線:當命名一個類屬性引起名稱衝突時使用。
兩個前置和尾碼底線:“魔術”(有特殊用途)對象或者屬性,例如__init__或者__file__。絕對不要創造這樣的名字,而只是使用它們。
*注意*:關於底線的使用存在一些爭議。
Python 用底線作為變數首碼和尾碼指定特殊變數。
_xxx 不能用‘from module import *‘匯入(相當於 private)
__xxx__ 系統定義名字
__xxx 類中的私人變數名(相當於protect)
核心風格:避免用底線作為變數名的開始。
因為底線對解譯器有特殊的意義,而且是內建標識符所使用的符號,我們建議程式員避免用底線作為變數名的開始。一般來講,變數名_xxx被看作是“私人的”,在模組或類外不可以使用。當變數是私人的時候,用_xxx 來表示變數是很好的習慣。"單底線" 開始的成員變數叫做保護變數,意思是只有類對象和子類對象自己能訪問到這些變數;
"雙底線" 開始的是私人成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個資料。
以單底線開頭(_foo)的代表不能直接存取的類屬性,需通過類提供的介面進行訪問,不能用“from xxx import *”而匯入;以雙底線開頭的(__foo)代表類的私人成員;以雙底線開頭和結尾的(__foo__)代表python裡特殊方法專用的標識,如__init__()代表類的建構函式。
特定命名方式
主要是指 __xxx__ 形式的系統保留字命名法。項目中也可以使用這種命名,它的意義在於這種形式的變數是唯讀,這種形式的類成員函數盡量不要重載。如
class Base(object):
def __init__(self, id, parent = None):
self.__id__ = id
self.__parent__ = parent
def __message__(self, msgid):
# …略
其中 __id__、__parent__ 和 __message__ 都採用了系統保留字命名法。
__雙底線開頭雙底線結尾__:指那些包含在使用者無法控制的命名空間中的“魔術”對象或屬性,如類成員的__name__、__doc__、__init__、__import__、__file__、等。推薦永遠不要將這樣的命名方式應用於自己的變數或函數。
單底線結尾_:只是為了避免與python關鍵字的命名衝突
_單底線開頭:弱“內部使用”標識,如:”from M import *”,將不匯入所有以底線開頭的對象,包括包、模組、成員
【轉】python變數命名規範