python零基礎(chǔ)之基礎(chǔ)語法迅速過(3)

關(guān)鍵字:類的私有屬性、特殊屬性、字典數(shù)據(jù)類型

????????今天在學(xué)習(xí)我們今天的字典數(shù)據(jù)類型之前,我們先來看一下在python中關(guān)于類的一個小知識點:類的私有屬性。

學(xué)過java的同學(xué)都知道,在java中對于私有屬性,是用一個專有的修飾符private來修飾,在python這個比較自由的語言中,對于私有屬性的定義也相當(dāng)自由,很簡單在屬性前+__,注意是兩個下劃線。

我們看下面一個例子

實例中我們定義了__sex為私有屬性,我們發(fā)現(xiàn)通過me.__sex這種寫法是無法獲取到該屬性的。我們都知道在java中要獲取私有屬性可以通過getter和setter方法對私有屬性進行操作的,當(dāng)然了在python中這也是可以的,但是還有一種更有趣的方式去獲取私有屬性(私有方法也是如此),如下

私有變量:實例._類名__變量名,私有方法也是如此

私有方法:實例._類名__方法名()

注意,類名._類名__變量名 也是可以獲取私有屬性的,但此時獲取的屬性屬于類屬性,舉個栗子,

若是此時我們做個小小的改動,把大寫的M換成小寫的m如下

這其中區(qū)別我想大家一眼就能瞧出。

是的,此時我們不禁要問,為啥以這種方式我們可以訪問到呢?

下面來學(xué)習(xí)python中另一個小知識點一個內(nèi)置函數(shù)dir()和一個數(shù)據(jù)模型__dict__(也叫Special attributes,還有一些特殊屬性,比如__doc__,__globals__等,之后我們會學(xué)到。詳情看官網(wǎng):3. Data model — Python 3.6.5 documentation)。

dir()函數(shù)描述:dir()?函數(shù)不帶參數(shù)時,返回當(dāng)前范圍內(nèi)的變量、方法和定義的類型列表;帶參數(shù)時,返回參數(shù)的屬性、方法列表。

__dict__是用來存儲對象屬性的一個字典,其鍵為屬性名,值為屬性的值。

定義將就看一下,直接上代碼可能更清晰,接著上面的例子

我們看到了我們熟悉的_類名__屬性名,原來我們之所以能訪問到python所謂的私有屬性,是因為python內(nèi)部已經(jīng)將私有屬性重新命名!

在例子中我們Me.__dict__返回的數(shù)據(jù)類型是python中非常經(jīng)典的數(shù)據(jù)類型:字典。

其實字典就是java中的map(數(shù)據(jù)印射),由于比較簡單,我們就用個例子簡單看下

需要注意兩點:

1dict內(nèi)部存放的順序和key放入的順序是沒有關(guān)系的。

2dict的key必須是不可變對象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容