python變量中單下劃線和雙下劃線的區(qū)別是什么

python變量中單下劃線和雙下劃線的區(qū)別是什么,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

目前成都創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、郊區(qū)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、變量的定義

在Python中,有以下幾種方式來定義變量:

xx:公有變量

_xx:前置單下劃線,私有化屬性或方法,一般來講,變量名_xx被看作是“私有 的”,在模塊或類外不可以使用。當(dāng)變量是私有的時候,用_xx 來表示變量是很好的習(xí)慣。類對象和子類可以訪問,這并不能完全做到真正的私有,只是約定俗成的而已,這樣寫表示不希望這個變量在外部被直接調(diào)用

__xx:前置雙下劃線,私有化屬性或方法,無法在外部直接訪問(名字重整所以訪問不到,只能是允許這個類本身進(jìn)行訪問了。連子類也不可以)

__xx__:前后雙下劃線,系統(tǒng)定義名字(這就是在python中強(qiáng)大的魔法方法),因?yàn)樽兞棵鸰_xxx__對Python 來說有特殊含義,對于普通的變量應(yīng)當(dāng)避免這種命名風(fēng)格。

xx_:后置單下劃線,用于避免與Python關(guān)鍵詞的沖突

如以下例子所示,我在test類中定義了x,_x和 __x三個屬性,并創(chuàng)建了test的類對象t,對這三個屬性進(jìn)行訪問,__x不能被訪問到

python變量中單下劃線和雙下劃線的區(qū)別是什么

學(xué)習(xí)從來不是一個人的事情,要有個相互監(jiān)督的伙伴,工作需要學(xué)習(xí)python或者有興趣學(xué)習(xí)python的伙伴可以私信回復(fù)小編“學(xué)習(xí)” 獲取資料,一起學(xué)習(xí)

可以使用命令dir查看t中的屬性和方法,__x的名字已經(jīng)被重整為“_test__x”了,如果你非要通過外部訪問,也是可以的,可以使用t._test__x對__x進(jìn)行訪問。

python中沒有真正的公有和私有變量,python只是對變量名稱做了一個變化,還是可以在外部訪問到的,是偽私有。

注:雖然私有變量可以通過_類名__變量名來訪問,但強(qiáng)烈建議不要這樣做!

二、使用不同方法導(dǎo)入模塊,模塊中私有變量的使用區(qū)別

在使用不同方法導(dǎo)入模塊后,是否能使用模塊中的私有屬性和方法,有以下兩種情況

使用 from somemodule import * 進(jìn)行導(dǎo)入,不能導(dǎo)入私有變量,結(jié)果如下:

在使用 import somemodule 導(dǎo)入模塊的情況下,能導(dǎo)入并使用私有屬性和方法

三、對類中的私有屬性進(jìn)行操作的方法

如果你想對類中的私有屬性進(jìn)行操作時,有以下兩種方法種方法:

python變量中單下劃線和雙下劃線的區(qū)別是什么

python變量中單下劃線和雙下劃線的區(qū)別是什么

注:

1,在構(gòu)造函數(shù)__init__中是_x,不是x,你直接x是訪問不到的;

2,為什么是_x 而不是x,這是python中的私有變量(雖然python中沒有公有變量和私有變量,也就是說這是偽私有),在python中,如果一個變量不想被外部直接訪問,一般是在變量前加一個下劃線,提醒不要直接訪問(其實(shí)是可以通過self._x訪問到的,如果不想被訪問還可以使用雙下劃線__x,也是不能直接訪問)所以提供get_x這樣的函數(shù)供使用者訪問;

3,為什么要使用_x這樣的偽私有變量,因?yàn)槲覀兪褂胮roperty時,讓方法變成屬性的方式來調(diào)用,一般是這樣寫x=property(...),這樣調(diào)用更加清晰明了;但是如果構(gòu)造函數(shù)中的變量也用x,就會和property中的變量有沖突,所有一般我們寫_x

看完上述內(nèi)容,你們掌握python變量中單下劃線和雙下劃線的區(qū)別是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

新聞名稱:python變量中單下劃線和雙下劃線的區(qū)別是什么
當(dāng)前URL:http://muchs.cn/article24/jpehje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、標(biāo)簽優(yōu)化、關(guān)鍵詞優(yōu)化、虛擬主機(jī)手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)