天天看點

Python中 單下劃線、前雙下劃線和前後雙下劃線的差別

  1. xx : 公有變量。
  2. _xx:前置單下劃線 — 口頭私有變量,私有化屬性或方法,一般來講,變量名_xx被看作是“私有 的”,在子產品或類外不可以使用。當變量是私有的時候,用_xx 來表示變量是很好的習慣。類對象和子類可以通路,這并不能完全做到真正的私有,隻是約定俗成的而已,這樣寫表示不希望這個變量在外部被直接調用。意思就是,“雖然我可以被通路,但是,請把我視為私有變量,不要随意通路”。
  3. __xx:前置雙下劃線 — 私有變量,私有化屬性或方法,無法在外部直接通路(名字重整是以通路不到,隻能是允許這個類本身進行通路了。連子類也不可以)。
  • 雙下劃線開頭的執行個體變量是不是一定不能從外部通路呢?其實也不是。不能直接通路__name是因為Python解釋器對外把__name變量改成了_KaTeX parse error: Expected group after '_' at position 12: {classname}_̲_name,是以,仍然可以通過…{classname}__name來通路__name變量。但是強烈建議你不要這麼幹,因為不同版本的Python解釋器可能會把__name改成不同的變量名。
  1. __ xx__:前後雙下劃線 — 特殊變量,系統定義名字(這就是在python中強大的魔法方法),因為變量名__xxx__對Python 來說有特殊含義,對于普通的變量應當避免這種命名風格。
  2. xx_:後置單下劃線,用于避免與Python關鍵詞的沖突。

參考文章:https://zhuanlan.zhihu.com/p/53469919