小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

山腰復習群知識點

 Four兄 2019-08-24

復習課主要以知識點梳理+一個代碼的練習+問題答疑

#

通過這個復習課,幫助大家鞏固類與對象這個知識點

#

有疑問的同學,在講解中間,助教會留出時間來給大家提問,希望大家遵守一下提問秩序哈~

#

12關、13關我們學習的面向對象編程,是山腰學習中最重要的知識內(nèi)容

#

學習這兩關的目標是

#

1)了解何為對象

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

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

4)熟練繼承與子類定制

#

涉及到的難點有:

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

#

首先我們要知道,什么是面向對象編程

#

面向對象編程就是以對象為中心,將一組對象組成程序。使用于較復雜,尤其需要持續(xù)更新的代碼場景。

#

那么類是什么?

#

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

#

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

#

#

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

#

參數(shù)是,我們在定義函數(shù)的時候,需要傳遞給類方法的東西

#

我們舉個例子

#

#

在這里的代碼中,我們在定義函數(shù)的時候,留了一個需要手動傳遞參數(shù)的位置

#

所以在調用類方法的時候,需要手動設置一個參數(shù)

#

如果沒有設置參數(shù),或者參數(shù)設置多了,都會報錯

#

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

#

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

#

#

這里有沒有疑問的同學呢?

#

我們繼續(xù)

#

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

#

舉個栗子

#

#

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

#

順著這個例子,我們接著講到,類的實例化是什么?實例怎么使用?

#

類是對象的模板,可以復制出多個對象,這個過程叫實例化

#

格式 : 實例名=類名() 

#

#

這里要注意,類實例化的時候,類的括號不能丟

#

被創(chuàng)造出來的實例與類一模一樣,但是它是獨立的對象

#

調用類屬性和類方法的格式分別為:

調用類的屬性:實例名.屬性;

調用類的方法:實例名.方法()

#

這里給大家展示一下例子

#

#

這個例子屬于,在類外部調用類的屬性

#

我們用print語句將my_computer這個實例的screen這個屬性打印出來

#

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

#

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

#

#

有同學問,為什么實例調用方法時不用傳參,定義時不是有個參數(shù)self嗎?

#

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

#

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

#

通俗一點理解,只要記住,加上self.前綴的類屬性和類方法,準確來說叫實例屬性和,可以在類下的不同類方法中實現(xiàn)調用

#

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

#

首先,實例屬性和類屬性:

1)修改類屬性,這會導致所有實例屬性變化(因為類是模板);

2)修改實例屬性,但這不會影響到其他實例,也不會影響到類。因為每個實例都是獨立的個體。

#

其次,實例方法和類方法:

1)重寫類方法,這會導致所有實例方法自動被重寫;

2)實例方法不可重寫

#

#

到這一步為止,有沒有疑問呢

#

繼續(xù)

#

初始化函數(shù)

#

初始化函數(shù)(方法),也叫構造函數(shù),它的意思是,當你創(chuàng)建一個實例的時候,這個函數(shù)就會被調用。

#

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

#

也就是寫成def __init__(self):

#

#

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

#

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

#

舉個栗子

#

#

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

#

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

#

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

#

#

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

#

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

#

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

#

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

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

#

#

這個例子屬于類的定制和調用,能夠理解這個代碼,其實對于類的繼承最核心的知識就掌握了

#

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

#

#

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

#

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

#

在Python中,子類如果定義了構造函數(shù),而沒有調用父類的,那么Python不會自動調用,也就是說父類的構造函數(shù)不會執(zhí)行

#

如果子類沒有定義自己的初始化函數(shù),父類的初始化函數(shù)會被默認調用;但是如果要實例化子類的對象,則只能傳入父類的初始化函數(shù)對應的參數(shù),否則會出錯。

#

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多