日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

山腰復(fù)習(xí)群知識(shí)點(diǎn)

 Four兄 2019-08-24

復(fù)習(xí)課主要以知識(shí)點(diǎn)梳理+一個(gè)代碼的練習(xí)+問(wèn)題答疑

#

通過(guò)這個(gè)復(fù)習(xí)課,幫助大家鞏固類與對(duì)象這個(gè)知識(shí)點(diǎn)

#

有疑問(wèn)的同學(xué),在講解中間,助教會(huì)留出時(shí)間來(lái)給大家提問(wèn),希望大家遵守一下提問(wèn)秩序哈~

#

12關(guān)、13關(guān)我們學(xué)習(xí)的面向?qū)ο缶幊蹋巧窖鼘W(xué)習(xí)中最重要的知識(shí)內(nèi)容

#

學(xué)習(xí)這兩關(guān)的目標(biāo)是

#

1)了解何為對(duì)象

2)區(qū)分變量與類屬性,函數(shù)與類方法

3)掌握類的實(shí)例化及初始化函數(shù)

4)熟練繼承與子類定制

#

涉及到的難點(diǎn)有:

類的實(shí)例化,初始化函數(shù)的改寫,繼承的用法

#

首先我們要知道,什么是面向?qū)ο缶幊?/p>

#

面向?qū)ο缶幊叹褪且詫?duì)象為中心,將一組對(duì)象組成程序。使用于較復(fù)雜,尤其需要持續(xù)更新的代碼場(chǎng)景。

#

那么類是什么?

#

類,是一個(gè)函數(shù)包。類中可以放置函數(shù)和變量,然后類中的函數(shù)可以很方便的使用類中的變量,(也就是類方法可以調(diào)用類屬性)

#

類中的 函數(shù) 叫 ‘方法’,類中的 變量 叫 ‘屬性’(就不要再說(shuō)函數(shù)和變量了,要說(shuō)類方法和類屬性)

#

#

那么,方法和屬性我們知道了,那什么是參數(shù)呢?

#

參數(shù)是,我們?cè)诙x函數(shù)的時(shí)候,需要傳遞給類方法的東西

#

我們舉個(gè)例子

#

#

在這里的代碼中,我們?cè)诙x函數(shù)的時(shí)候,留了一個(gè)需要手動(dòng)傳遞參數(shù)的位置

#

所以在調(diào)用類方法的時(shí)候,需要手動(dòng)設(shè)置一個(gè)參數(shù)

#

如果沒有設(shè)置參數(shù),或者參數(shù)設(shè)置多了,都會(huì)報(bào)錯(cuò)

#

但有一種情況可以不手動(dòng)設(shè)置參數(shù)

#

那就是在定義方法的時(shí)候,將需要的參數(shù)設(shè)置為默認(rèn)參數(shù)

#

#

這里有沒有疑問(wèn)的同學(xué)呢?

#

我們繼續(xù)

#

在同一個(gè)類里面,不同方法之間,還可以實(shí)現(xiàn)方法的調(diào)用

#

舉個(gè)栗子

#

#

在方法 live()中,就調(diào)用了方法 born()

#

順著這個(gè)例子,我們接著講到,類的實(shí)例化是什么?實(shí)例怎么使用?

#

類是對(duì)象的模板,可以復(fù)制出多個(gè)對(duì)象,這個(gè)過(guò)程叫實(shí)例化

#

格式 : 實(shí)例名=類名() 

#

#

這里要注意,類實(shí)例化的時(shí)候,類的括號(hào)不能丟

#

被創(chuàng)造出來(lái)的實(shí)例與類一模一樣,但是它是獨(dú)立的對(duì)象

#

調(diào)用類屬性和類方法的格式分別為:

調(diào)用類的屬性:實(shí)例名.屬性;

調(diào)用類的方法:實(shí)例名.方法()

#

這里給大家展示一下例子

#

#

這個(gè)例子屬于,在類外部調(diào)用類的屬性

#

我們用print語(yǔ)句將my_computer這個(gè)實(shí)例的screen這個(gè)屬性打印出來(lái)

#

屬性可以在外部調(diào)用,也可以在類的內(nèi)部調(diào)用

#

當(dāng)在類的方法內(nèi)部想調(diào)用類屬性或其他方法時(shí),就要采用self.屬性名或self.方法名的格式。(相當(dāng)于改變了作用域)

#

#

有同學(xué)問(wèn),為什么實(shí)例調(diào)用方法時(shí)不用傳參,定義時(shí)不是有個(gè)參數(shù)self嗎?

#

這就是參數(shù)self的特殊之處:在定義時(shí)不能丟,在調(diào)用時(shí)要忽略

#

self的作用是,self會(huì)接收實(shí)例化過(guò)程中傳入的數(shù)據(jù),當(dāng)實(shí)例對(duì)象創(chuàng)建后,實(shí)例便會(huì)代替 self,在代碼中運(yùn)行

#

通俗一點(diǎn)理解,只要記住,加上self.前綴的類屬性和類方法,準(zhǔn)確來(lái)說(shuō)叫實(shí)例屬性和,可以在類下的不同類方法中實(shí)現(xiàn)調(diào)用

#

那么,實(shí)例的對(duì)象,和類之間有什么聯(lián)系呢

#

首先,實(shí)例屬性和類屬性:

1)修改類屬性,這會(huì)導(dǎo)致所有實(shí)例屬性變化(因?yàn)轭愂悄0澹?/p>

2)修改實(shí)例屬性,但這不會(huì)影響到其他實(shí)例,也不會(huì)影響到類。因?yàn)槊總€(gè)實(shí)例都是獨(dú)立的個(gè)體。

#

其次,實(shí)例方法和類方法:

1)重寫類方法,這會(huì)導(dǎo)致所有實(shí)例方法自動(dòng)被重寫;

2)實(shí)例方法不可重寫

#

#

到這一步為止,有沒有疑問(wèn)呢

#

繼續(xù)

#

初始化函數(shù)

#

初始化函數(shù)(方法),也叫構(gòu)造函數(shù),它的意思是,當(dāng)你創(chuàng)建一個(gè)實(shí)例的時(shí)候,這個(gè)函數(shù)就會(huì)被調(diào)用。

#

初始化函數(shù)的寫法是固定的格式:中間是“init”,這個(gè)單詞的中文意思是“初始化”,然后前后都要有【兩個(gè)下劃線】,然后__init__()的括號(hào)中,第一個(gè)參數(shù)一定要寫上self,不然會(huì)報(bào)錯(cuò)

#

也就是寫成def __init__(self):

#

#

我們一般會(huì)用初始化函數(shù)來(lái)做什么呢?

#

在初始化方法內(nèi)部完成類屬性的創(chuàng)建,為類屬性設(shè)置初始值,這樣類中的其他方法就能直接、隨時(shí)調(diào)用。不需要再調(diào)用__init__()

#

舉個(gè)栗子

#

#

在這個(gè)類中,一旦調(diào)用,就會(huì)執(zhí)行初始化函數(shù)創(chuàng)建類屬性

#

在初始化函數(shù)的定義時(shí),也可以設(shè)置需要傳遞的參數(shù)位置

#

在實(shí)例化類的時(shí)候,可直接手動(dòng)傳入?yún)?shù)

#

#

繼續(xù)講最后一個(gè)知識(shí),類的繼承

#

類的繼承很大程度也是為了避免重復(fù)性勞動(dòng)。比如說(shuō)當(dāng)我們要寫一個(gè)新的類,如果新的類有許多代碼都和舊類相同,又有一部分不同的時(shí)候,就可以用“繼承”的方式避免重復(fù)寫代碼;

#

同理,在類的繼承后,子類重寫初始化函數(shù)時(shí)調(diào)用父類的初始化函數(shù),也是因?yàn)樵S多代碼都和舊類相同,又有一部分不同的時(shí)候,就可以用調(diào)用的方式避免重復(fù)寫代碼;

#

子類創(chuàng)建的實(shí)例,同時(shí)屬于父類

父類創(chuàng)建的實(shí)例,不屬于子類;

#

#

這個(gè)例子屬于類的定制和調(diào)用,能夠理解這個(gè)代碼,其實(shí)對(duì)于類的繼承最核心的知識(shí)就掌握了

#

子類會(huì)自動(dòng)擁有父類的屬性和方法,子類不需要顯示寫出來(lái),顯示寫的方法叫重寫方法,即名字與父類的方法名相同,函數(shù)參數(shù)也相同則父類的方法被重寫

#

#

就是很多人常問(wèn)的課程上的題目,這里為什么要加book.__init__

#

這里就是重寫了方法,如果你已經(jīng)繼承父類的方法,但是子類又重新寫了初始化函數(shù),那么就屬于重寫,要重寫就要在下一行加入父類.__init__(self,xx)這樣的格式

#

在Python中,子類如果定義了構(gòu)造函數(shù),而沒有調(diào)用父類的,那么Python不會(huì)自動(dòng)調(diào)用,也就是說(shuō)父類的構(gòu)造函數(shù)不會(huì)執(zhí)行

#

如果子類沒有定義自己的初始化函數(shù),父類的初始化函數(shù)會(huì)被默認(rèn)調(diào)用;但是如果要實(shí)例化子類的對(duì)象,則只能傳入父類的初始化函數(shù)對(duì)應(yīng)的參數(shù),否則會(huì)出錯(cuò)。

#

Python支持多繼承,如果多個(gè)繼承類都重寫了相應(yīng)屬性和方法,則按就近原則繼承屬性和行為,這里的就近就是C1。如下圖所示:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多