Python--面向對象特徵1一封裝 一、封裝 二、隱藏類中的屬性 三、property裝飾器

一、封裝

1.封裝是什麼?

是面向對象的三大特性之一。指的是隱藏對象中一些不希望被外部所訪問的屬性或者方法。

2.如何隱藏一個對象中的屬性?

將對象的屬性名,修改爲一個外部不知道的名字。

3.如何獲取(修改)對象中的隱藏的屬性?

需要提供一個getter和setter方法使外部可以訪問到屬性。

getter 獲取對象中的指定屬性(get_屬性名)

setter用來設置對象的指定屬性(set_屬性名)

4.封裝的好處

使用封裝,增加了類的定義的複雜成俗,但是也確保了數據的安全性。

1.隱藏了屬性名,使調用者無法隨意的修改對象中的屬性

2.增加了getter和setter方法,很好的控制屬性是否是隻讀的。

如果希望屬性是隻讀的,則可以直接去掉setter方法

如果希望屬性不能被外部訪問,則可以去掉getter方法

3.使用setter方法設置屬性,可以增加數據的驗證,確保數據的值是正確的。

4.使用getter屬性獲取屬性,使用setter方法設置屬性。可以在讀取屬性和修改屬性的同時做一些其他的處理。

5.使用getter方法可以表示一些計算的屬性。

二、隱藏類中的屬性

--可以爲對象的屬性使用雙下劃線開頭,__XXX

雙下劃線開頭的屬性是對象的隱藏屬性,隱藏屬性只能在類的內部訪問,無法通過對象訪問。

--其實隱藏屬性只不過是python自動爲屬性改了一個名字。

實際上將名字改爲了,_類名__屬性名,比如__name修改爲_Person__name

--使用__開頭的屬性,實際上依然可以在外部訪問,所以這種方式我們一般不用

一般我們會將一些私有屬性(不希望被外部訪問的屬性)以_開頭

一般情況下,使用_開頭的屬性都是私有屬性,沒有特殊需求不要修改私有屬性。

三、property裝飾器

--@property裝飾器,用來將一個get方法,轉換爲對象的屬性

--添加爲property裝飾器以後去,我們就可以像屬性一樣使用get方法。

--使用property裝飾的方法,必須和屬性名是一樣的。

--setter方法的裝飾器:@屬性名.setter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章