您好,登錄后才能下訂單哦!
python變量中單下劃線和雙下劃線的區別是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一、變量的定義
在Python中,有以下幾種方式來定義變量:
xx:公有變量
_xx:前置單下劃線,私有化屬性或方法,一般來講,變量名_xx被看作是“私有 的”,在模塊或類外不可以使用。當變量是私有的時候,用_xx 來表示變量是很好的習慣。類對象和子類可以訪問,這并不能完全做到真正的私有,只是約定俗成的而已,這樣寫表示不希望這個變量在外部被直接調用
__xx:前置雙下劃線,私有化屬性或方法,無法在外部直接訪問(名字重整所以訪問不到,只能是允許這個類本身進行訪問了。連子類也不可以)
__xx__:前后雙下劃線,系統定義名字(這就是在python中強大的魔法方法),因為變量名__xxx__對Python 來說有特殊含義,對于普通的變量應當避免這種命名風格。
xx_:后置單下劃線,用于避免與Python關鍵詞的沖突
如以下例子所示,我在test類中定義了x,_x和 __x三個屬性,并創建了test的類對象t,對這三個屬性進行訪問,__x不能被訪問到
學習從來不是一個人的事情,要有個相互監督的伙伴,工作需要學習python或者有興趣學習python的伙伴可以私信回復小編“學習” 獲取資料,一起學習
可以使用命令dir查看t中的屬性和方法,__x的名字已經被重整為“_test__x”了,如果你非要通過外部訪問,也是可以的,可以使用t._test__x對__x進行訪問。
python中沒有真正的公有和私有變量,python只是對變量名稱做了一個變化,還是可以在外部訪問到的,是偽私有。
注:雖然私有變量可以通過_類名__變量名來訪問,但強烈建議不要這樣做!
二、使用不同方法導入模塊,模塊中私有變量的使用區別
在使用不同方法導入模塊后,是否能使用模塊中的私有屬性和方法,有以下兩種情況
使用 from somemodule import * 進行導入,不能導入私有變量,結果如下:
在使用 import somemodule 導入模塊的情況下,能導入并使用私有屬性和方法
三、對類中的私有屬性進行操作的方法
如果你想對類中的私有屬性進行操作時,有以下兩種方法種方法:
注:
1,在構造函數__init__中是_x,不是x,你直接x是訪問不到的;
2,為什么是_x 而不是x,這是python中的私有變量(雖然python中沒有公有變量和私有變量,也就是說這是偽私有),在python中,如果一個變量不想被外部直接訪問,一般是在變量前加一個下劃線,提醒不要直接訪問(其實是可以通過self._x訪問到的,如果不想被訪問還可以使用雙下劃線__x,也是不能直接訪問)所以提供get_x這樣的函數供使用者訪問;
3,為什么要使用_x這樣的偽私有變量,因為我們使用property時,讓方法變成屬性的方式來調用,一般是這樣寫x=property(...),這樣調用更加清晰明了;但是如果構造函數中的變量也用x,就會和property中的變量有沖突,所有一般我們寫_x
看完上述內容,你們掌握python變量中單下劃線和雙下劃線的區別是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。