1.特殊方法
- 在類(lèi)中定義一些特殊的方法我們也稱(chēng)之為魔術(shù)方法
- 特殊方法都是形如—xxx—{}這種形式
- 特殊方法不需要我們調(diào)用炊林,特殊的方法會(huì)在特定的時(shí)候自動(dòng)調(diào)用
*在打印結(jié)果時(shí),先是類(lèi)中對(duì)象纫谅,然后才是init方法
2.封裝
- 出現(xiàn)封裝的原因:我們需要一種方式來(lái)增強(qiáng)數(shù)據(jù)的安全性
甫何。屬性不能隨意修改
穆咐。屬性不能改成任意的值 - 封裝是面向?qū)ο蟮娜筇匦灾?/li>
- 封裝是指隱藏對(duì)象中一些不希望被外部所訪問(wèn)到的屬性或方法
- 我們可以提供一些getter()和setter()方法是外部可以訪問(wèn)到的屬性
益缎。getter()是用來(lái)獲取對(duì)象中指定的屬性
谜慌。setter()是用來(lái)設(shè)置對(duì)象指定的屬性 - 使用封裝確實(shí)增加了類(lèi)的定義的復(fù)雜程度,但是它也確保了數(shù)據(jù)的安全
莺奔。1. 隱藏屬性名欣范,使調(diào)?者?法隨意的修改對(duì)象中的屬性
。2. 增加了getter()和setter()?法令哟,很好控制屬性是否是只讀的
恼琼。3. 使?setter()設(shè)置屬性,可以增加數(shù)據(jù)的驗(yàn)證屏富,確保數(shù)據(jù)是正確的
晴竞。4. 使?getter()?法獲取屬性,使?setter()?法設(shè)置屬性可以在讀取屬性和修改屬性的同時(shí)做?些其他的處理 - 可以為對(duì)象的屬性使?雙下劃線開(kāi)頭 __xxx狠半。雙下劃線開(kāi)頭的屬性噩死,是對(duì)象的隱藏屬性,隱藏屬性只能在類(lèi)的內(nèi)部訪問(wèn)神年,?法通過(guò)對(duì)象訪問(wèn)
- 其實(shí)隱藏屬性只不過(guò)是Python?動(dòng)為屬性改了?個(gè)名字 --> 類(lèi)名_屬性名 例如 __name -> _Person__name
- 這種?式實(shí)際上依然可以在外部訪問(wèn)已维,所以這種?式我們?般不?。?般我們會(huì)將?些私有屬性以_開(kāi)頭
-
?般情況下,使?_開(kāi)頭的屬性都是私有屬性瘤袖,沒(méi)有特殊情況下不要修改私有屬性
3.封裝
4.封裝真正的書(shū)寫(xiě)方法
5.porperty裝飾器
-
我們可以使用@porperty裝飾器來(lái)創(chuàng)建只讀屬性衣摩,@porperty裝飾器會(huì)將方法轉(zhuǎn)換為相同名稱(chēng)的只讀屬性,可以與所定義的屬性配合使用捂敌,這樣可以防止屬性被修改