一、封裝
1.封裝是什么?
是面向?qū)ο蟮娜筇匦灾?。指的是隱藏對(duì)象中一些不希望被外部所訪問的屬性或者方法。
2.如何隱藏一個(gè)對(duì)象中的屬性?
將對(duì)象的屬性名,修改為一個(gè)外部不知道的名字。

3.如何獲?。ㄐ薷模?duì)象中的隱藏的屬性?
需要提供一個(gè)getter和setter方法使外部可以訪問到屬性。
getter?獲取對(duì)象中的指定屬性(get_屬性名)
setter用來設(shè)置對(duì)象的指定屬性(set_屬性名)

4.封裝的好處
使用封裝,增加了類的定義的復(fù)雜成俗,但是也確保了數(shù)據(jù)的安全性。
1.隱藏了屬性名,使調(diào)用者無法隨意的修改對(duì)象中的屬性
2.增加了getter和setter方法,很好的控制屬性是否是只讀的。
如果希望屬性是只讀的,則可以直接去掉setter方法
如果希望屬性不能被外部訪問,則可以去掉getter方法
3.使用setter方法設(shè)置屬性,可以增加數(shù)據(jù)的驗(yàn)證,確保數(shù)據(jù)的值是正確的。
4.使用getter屬性獲取屬性,使用setter方法設(shè)置屬性??梢栽谧x取屬性和修改屬性的同時(shí)做一些其他的處理。
5.使用getter方法可以表示一些計(jì)算的屬性。

二、隱藏類中的屬性
--可以為對(duì)象的屬性使用雙下劃線開頭,__XXX
雙下劃線開頭的屬性是對(duì)象的隱藏屬性,隱藏屬性只能在類的內(nèi)部訪問,無法通過對(duì)象訪問。
--其實(shí)隱藏屬性只不過是python自動(dòng)為屬性改了一個(gè)名字。
實(shí)際上將名字改為了,_類名__屬性名,比如__name修改為_Person__name
--使用__開頭的屬性,實(shí)際上依然可以在外部訪問,所以這種方式我們一般不用
一般我們會(huì)將一些私有屬性(不希望被外部訪問的屬性)以_開頭
一般情況下,使用_開頭的屬性都是私有屬性,沒有特殊需求不要修改私有屬性。

三、property裝飾器
--@property裝飾器,用來將一個(gè)get方法,轉(zhuǎn)換為對(duì)象的屬性
--添加為property裝飾器以后去,我們就可以像屬性一樣使用get方法。
--使用property裝飾的方法,必須和屬性名是一樣的。
--setter方法的裝飾器:@屬性名.setter

