Day15總結(jié)-2019/08/09

一、內(nèi)置類屬性

聲明類的時候系統(tǒng)自動添加的屬性:字段、對象屬性。

用法 分類 說明
類名.__name__ 字段 獲取類的名字(字符串)
類名.__doc__ 字段 獲取類的說明文檔
類名.__module__ 字段 獲取當(dāng)前類是在哪個模塊中聲明的
類名.__bases__ 字段 獲取當(dāng)前類的父類(返回一個元組)
對象.__class__ 對象屬性 獲取對象對應(yīng)的類(和type(對象)功能一樣)

__dict__ -將對象轉(zhuǎn)換成字典

對象屬性;對象.dict - 將對象所有的屬性和對應(yīng)的值轉(zhuǎn)換成一個字典中的鍵值對(一個對象一個字典)
類的字段;類.dict - 將類轉(zhuǎn)換成一個字典,字典中的元素是類中所有的字段和對應(yīng)的值
注意:如果設(shè)置了slots的值,那么當(dāng)前類的對象就不能使用dict屬性

二、權(quán)限:公開、保護、私有

公開 - 公開的屬性和方法在類的內(nèi)部、外部能夠使用,也能被繼承。
保護 - 保護的屬性和方法在類的內(nèi)部能夠使用,外部不能使用,但是可以被繼承。
私有 - 私有的屬性和方法只能在類的內(nèi)部使用、外部不能使用,也不能被繼承。

1.設(shè)置私有化的訪問權(quán)限:屬性和方法
python類中所有的屬性和方法本質(zhì)都是公開的;
私有化是假的,只是提示程序員這個屬性或者方法在外部不要使用,也不要去繼承。
私有化:在需要私有化的屬性名或者方法前加''(注意;不能以''結(jié)尾)。
原理:在私有的屬性和方法前加了'_類名'。

三、屬性的getter和setter

1.getter和setter:

當(dāng)我們需要在獲取屬性值之前做點別的事情,就需要給這個屬性添加getter
當(dāng)需要給屬性賦值之前做別的事情,就需要給這個屬性添加setter

2.添加getter

1)屬性命名的時候前面加'_'
2)在@property裝飾器后面聲明一個對象方法
a.將屬性去掉下劃線作為方法名
b.方法除了self以外不需要其他參數(shù)
c.函數(shù)的返回值就是獲取這個屬性的時候得到的值
3)在外部使用屬性的時候,通過'對象.不帶下劃線的屬性'去使用

注意:獲取屬性值的時候,就會自動去調(diào)用getter對應(yīng)的函數(shù)

3.給屬性添加setter

屬性添加setter之前必須先添加getter
1)保證屬性名前有'_'
2)在@getter名.getter后面聲明對象方法
a.將屬性去掉下劃線作為方法名
b.需要一個self以外的參數(shù)
c.不需要返回值
3)在外部使用屬性的時候,通過'對象.不帶下劃線的屬性'去使用

注意:當(dāng)給屬性賦值的時候,實質(zhì)是調(diào)用setter對應(yīng)的方法

四、類中的方法:

1.類中的函數(shù)

類中的方法分為:對象方法、類方法和靜態(tài)方法

1.對象方法
a.怎么聲明:直接聲明
b.怎么調(diào)用:用對象來調(diào)用
c.特點:有指向當(dāng)前對象的self
d.什么時候用:如果實現(xiàn)函數(shù)的功能需要用到對象屬性就是用對象方法

2.類方法
a.怎么聲明:聲明在@classmethod后面
b.怎么調(diào)用:用類來調(diào)用,'類.方法名'
c.特點:有自帶的參數(shù)cls,表示當(dāng)前類;這個參數(shù)在調(diào)用的時候不用傳參,系統(tǒng)會自動將當(dāng)前類傳給他
cls:誰調(diào)用就指向誰(如果是對象,指向的是對象對應(yīng)的類)
d.什么時候用:如果實現(xiàn)函數(shù)的功能不需要對象屬性,但是需要類的字段,就使用類方法

3.靜態(tài)方法
a.怎么聲明:聲明在@staticmethod后面
b.怎么調(diào)用:通過類來調(diào)用,'類.靜態(tài)方法()'
c.特點:沒有默認參數(shù)
d.什么時候用:實現(xiàn)函數(shù)的功能既不需要類也不需要對象,就使用靜態(tài)方法

五、繼承

1.什么是繼承

繼承就是讓子類直接擁有父類所有的屬性和方法
子類 - 繼承者
父類/超類 - 被繼承者

2.怎么繼承

1)語法:
class 類名(父類1,父類2,...):
說明文檔
類的內(nèi)容

2)說明:
() - 固定寫法,如果省略相當(dāng)于(object)
聲明類的時候如果沒有寫父類,默認繼承object(object又叫基類)
父類 - 一個類的父類可以有多個,但是一般情況下只有一個(支持多繼承)

子類添加方法:
在子類中可以通過super()可以去調(diào)用父類的方法 - 只能在對象方法和類方法中使用
子類添加對象屬性:
子類添加init()方法,在中間通過super().init()調(diào)用父類的init()來繼承父類的對象屬性

?著作權(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)容