保留的標(biāo)示符類型
除了關(guān)鍵字之外蔑鹦,還有幾類標(biāo)示符有特殊的含義谨湘。這些標(biāo)示符類型使用以下劃線開(kāi)頭和結(jié)尾的模式:
- _*: 這種標(biāo)示符不會(huì)被 from module import * 導(dǎo)入。在交互式解釋器中遵蚜,它被用來(lái)保存最后一次求值的結(jié)果扒腕。它被保存在__builtin__模塊中吧彪。當(dāng)處于非交互式模式時(shí)蹋肮,名稱"_"并無(wú)特殊含義出刷,也未被定義。注意坯辩,"_"經(jīng)常與國(guó)際化一起使用馁龟。
- __*__: 系統(tǒng)定義的名稱。這些名稱由解釋器及其實(shí)現(xiàn)(包括標(biāo)準(zhǔn)庫(kù))定義漆魔。在任何上下文中對(duì)此類名稱的任何使用坷檩,如果沒(méi)有伴隨顯示的文檔記錄,就很容易在沒(méi)有任何警告的情況下遭到破壞有送。
- __*: 類的私有名稱淌喻。這種類別的名稱僧家,當(dāng)用在 類定義的 上下文中(within the context of a class definition)時(shí)雀摘,會(huì)被重寫以使用一個(gè)改編的形式(a mangled form)幫助避免基類和派生類私有屬性間的命名沖突。
私有名稱的改編(Private name mangling)
在類定義中八拱,如果一個(gè)標(biāo)示符以兩個(gè)或多個(gè)下劃線開(kāi)頭阵赠,且不以兩個(gè)或多個(gè)下劃線結(jié)尾涯塔,它就被認(rèn)為是該類的私有名稱。在為私有名稱生成代碼之前清蚀,它們被轉(zhuǎn)換為更長(zhǎng)的形式匕荸。轉(zhuǎn)換過(guò)程為在私有名稱前加上類名,再開(kāi)頭加上前綴字符"_"枷邪。例如榛搔,類Ham中有一個(gè)私有名稱__spam,它將會(huì)被轉(zhuǎn)換為_(kāi)Ham__spam东揣。如果轉(zhuǎn)換后的名稱極其長(zhǎng)(超過(guò)了255個(gè)字符)践惑,截?cái)嗫赡軙?huì)發(fā)生。如果類名僅由下劃線組成嘶卧,就不會(huì)發(fā)生轉(zhuǎn)換尔觉。