继承_月隐学python第16课
目錄
1.封裝
1.1 屬性私有化
1.2 屬性裝飾器
1.3 成員?法私有化
2.繼承
2.1 單繼承
2.2 多繼承(理解、了解)
3.類成員
作業(yè)
初級(jí)
中級(jí)
?向?qū)ο笕?特征:封裝、繼承、多態(tài)
1.封裝
隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開接?,控制在程序中屬性的讀取和修改的訪問(wèn)級(jí)別。
類本身就是?種封裝,通過(guò)類可以將數(shù)據(jù)(屬性)和?為(?法)相結(jié)合,形成?個(gè)有機(jī)的整體,也就是將數(shù)據(jù)與對(duì)數(shù)據(jù)的操作有機(jī)的結(jié)合。封裝的?的是增強(qiáng)安全性和簡(jiǎn)化編程,使?者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),?只是要通過(guò)外部接?,以特定的訪問(wèn)權(quán)限來(lái)使?類的成員。成員私有化是實(shí)現(xiàn)封裝的?段。所有的成員默認(rèn)是公有。
1.1 屬性私有化
如果想讓類的內(nèi)部屬性不被外界直接訪問(wèn),可以在這個(gè)屬性的前?加兩個(gè)下劃線__,在Python中,如果?個(gè)屬性的前?出現(xiàn) __,就表示這個(gè)屬性只能在當(dāng)前類的?法中被直接訪問(wèn),不能通過(guò)對(duì)象直接訪問(wèn),這個(gè)變量就被稱為私有變量
1.2 屬性裝飾器
對(duì)于私有屬性的訪問(wèn),使?公開?法間接訪問(wèn)的?法太麻煩, python提供了?種便捷語(yǔ)法,屬性裝飾器,通過(guò)屬性裝飾器,可以很?便的對(duì)私有屬性進(jìn)訪問(wèn),屬性修飾器可以把?法屬性化。
1.3 成員?法私有化
如果對(duì)?個(gè)?法的名字前?加__,聲明該?法為私有?法,只能在當(dāng)前類中被調(diào)?,在外界不能通過(guò)對(duì)象直接調(diào)?,這就是私有?法
2.繼承
?
?向?qū)ο缶幊?(OOP) 語(yǔ)?的?個(gè)主要功能就是“繼承”,所謂繼承就是使現(xiàn)有的類?需編碼便可以擁有原有類的?法和屬性。
被繼承的類可以稱之為?類、基類、超類。繼承的類可以稱之為?類、派?類。派?和繼承是?體兩?,從?類向?類看就是派?,從?類向?類看就是繼承。?類和?類的關(guān)系可以?“is a”類表示,即?類是?類的?種,是?個(gè)更具體、更加強(qiáng)?的?類。 python?持單繼承和多繼承。
繼承的優(yōu)點(diǎn):
- 可以簡(jiǎn)化代碼,減少冗余度
- 提?了代碼的可維護(hù)性
- 提?了代碼的安全性
2.1 單繼承
所謂的單繼承就是?個(gè)?類只有?個(gè)?類。?類會(huì)繼承?類所有的屬性和?法。
- 私有成員在?類中?法直接使?
- ?類對(duì)象?法直接使?繼承??類的私有成員
- ?類?法和?類?法重名,通過(guò)?類對(duì)象調(diào)?的是?類?法
?
注意: object是Python中所有類的?類【?般情況下,如果?個(gè)類沒(méi)有指明的?類,默認(rèn)它的?類為object】
- 構(gòu)造函數(shù)的繼承
- ?法的改寫
- ?法添加
?
2.2 多繼承(理解、了解)
?個(gè)?類可以有多個(gè)?類。語(yǔ)法:
3.類成員
類成員包括:類屬性和類?法,不同于成員屬性和成員?法屬于對(duì)象,類屬性和類?法屬于類,可以不實(shí)例化對(duì)象,直接通過(guò)類名調(diào)?,這些類成員為所有對(duì)象共有,?般?于對(duì)象間通信。
在程序運(yùn)?期間類屬性始終存在
類屬性
類?法和靜態(tài)?法
- 類?法屬于類,為所有對(duì)象共有,可以通過(guò)類名或?qū)ο笳{(diào)?
- 類?法可以?來(lái)訪問(wèn)類屬性
- 靜態(tài)?法屬于類的作?域內(nèi)的全局函數(shù)
- 類?法和靜態(tài)?法的區(qū)別,類?法第?個(gè)參數(shù)是類對(duì)象,由系統(tǒng)傳?,靜態(tài)?法沒(méi)有
- 共同點(diǎn):靜態(tài)?法和類?法都可以通過(guò)類名直接調(diào)?,屬于類,不屬于對(duì)象
作業(yè)
初級(jí)
1.劉凱買了一臺(tái)玫瑰紅phone10,價(jià)值8000元,可以打電話、玩游戲
2.寫一個(gè)計(jì)算器?類,可以進(jìn)行加、減、乘、除計(jì)算
3.設(shè)計(jì)兩個(gè)類:
- 一個(gè)點(diǎn)類,屬性包括xy坐標(biāo)。
- 一個(gè)Rectangle類(矩形) ,屬性有左上?和右下角的坐標(biāo),可以計(jì)算矩形的面積;可以判斷點(diǎn)是否在正方形內(nèi)
實(shí)例化一個(gè)點(diǎn),?個(gè)正方形,輸出正?形的?積,輸出點(diǎn)是否在正方形內(nèi)
4.定義一個(gè)Time類,成員屬性包括:時(shí)、分、秒;成員?方法: ?
add_hour(self,num) 把小時(shí)加num?add_minute(self,num) 把分鐘加num?add_second(self,num) 把秒數(shù)加num?重寫 __str(self)__ ?方法,返回格式化的時(shí)間字符串串: "04:16:09"
中級(jí)
1.請(qǐng)寫?個(gè)小游戲,人狗大站, 2個(gè)??,?和狗,游戲開始后,?成2個(gè)人, 3條狗,互相混戰(zhàn),人被狗咬了會(huì)掉血,狗被人打了也掉血,狗和人的攻擊力,具備的功能都不?樣。
?
總結(jié)
以上是生活随笔為你收集整理的继承_月隐学python第16课的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 类和对象_月隐学python第15课
- 下一篇: 关于webstorm 配置 banbel