python-第十六課-面向?qū)ο?-類(lèi)和對(duì)象

A.課程內(nèi)容

本節(jié)課學(xué)習(xí)非常重要的知識(shí)點(diǎn)——類(lèi)和對(duì)象噪猾。

B.知識(shí)點(diǎn)

(1)創(chuàng)建類(lèi)
(2)創(chuàng)建實(shí)例
(3)類(lèi)的繼承

C.用到的基本指令

(1)class
(2)def
(3)while Ture無(wú)限循環(huán)
(4)print()
(5)if-elif-else條件語(yǔ)句
(6)print()
(7)input()

C.類(lèi)和實(shí)例

面向?qū)ο缶幊绦枰褂谩邦?lèi)”和“對(duì)象”來(lái)實(shí)現(xiàn)涛癌,所以白魂,面向?qū)ο缶幊唐鹗季褪菍?duì)“類(lèi)”和“對(duì)象”的使用鬼悠。類(lèi)就是一個(gè)模板丹壕,模板里可以包含多個(gè)函數(shù)箩兽,函數(shù)里實(shí)現(xiàn)一些功能缺菌。對(duì)象則是根據(jù)模板創(chuàng)建的實(shí)例葫辐,通過(guò)實(shí)例對(duì)象可以執(zhí)行類(lèi)中的函數(shù)。Python中使用類(lèi)的順序是先創(chuàng)建(定義)類(lèi)伴郁,然后再創(chuàng)建類(lèi)的實(shí)例對(duì)象耿战,通過(guò)實(shí)例對(duì)象實(shí)現(xiàn)特定的功能。

1.創(chuàng)建類(lèi)

Python中焊傅,使用class語(yǔ)句來(lái)創(chuàng)建一個(gè)新類(lèi)昆箕,class之后為類(lèi)的名稱(chēng)并加括號(hào),最后以冒號(hào)(:)結(jié)尾租冠,并以統(tǒng)一縮進(jìn)部分作為類(lèi)體鹏倘。如下圖:


(1)定義一個(gè)名為Student的類(lèi)。在Python中顽爹,類(lèi)名的首字母應(yīng)該大寫(xiě)纤泵,其他字母全部小寫(xiě)。
(2)類(lèi)中的函數(shù)稱(chēng)為方法:除調(diào)用方式不同外镜粤,之前學(xué)習(xí)的有關(guān)函數(shù)的知識(shí)都適用于此方法捏题。“init()”是一個(gè)特殊的方法肉渴,被成為類(lèi)的構(gòu)造函數(shù)或初始化方法公荧,它的名稱(chēng)中開(kāi)頭和末尾各有兩個(gè)下劃線(xiàn),這是一種約定同规。每當(dāng)你根據(jù)Student類(lèi)創(chuàng)建新實(shí)例時(shí)循狰,Python都會(huì)在自動(dòng)運(yùn)行“init()”方法。self券勺、name和score為init()方法的3個(gè)形參绪钥。在這個(gè)方法定義中,self必不可少关炼,還必須位于其他形參的前面程腹。為什么必須包含self呢?因?yàn)檎{(diào)用“init()”方法來(lái)創(chuàng)建Student實(shí)例時(shí)儒拂,將自動(dòng)傳入實(shí)參self寸潦。每個(gè)與類(lèi)相關(guān)聯(lián)的方法調(diào)用都自動(dòng)傳遞實(shí)參self色鸳,它是一個(gè)指向?qū)嵗旧淼囊茫寣?shí)例能訪(fǎng)問(wèn)類(lèi)中的引用和方法见转。因此調(diào)用時(shí)命雀,不用給self傳入?yún)?shù),只需給最后面兩個(gè)形參(name和score)傳入值即可池户。
self.name和self.score這兩個(gè)變量前面都有前綴self咏雌。以self為前綴的變量都可供類(lèi)中的所有方法使用凡怎,我們還可以通過(guò)類(lèi)的任何實(shí)例來(lái)訪(fǎng)問(wèn)這些變量校焦,self.name=name獲取存儲(chǔ)在形參name中的值,并將其存儲(chǔ)到變量name中统倒,然后該變量被關(guān)聯(lián)到當(dāng)前創(chuàng)建的實(shí)例寨典。self.score=score作用類(lèi)似。另外房匆,可通過(guò)實(shí)例訪(fǎng)問(wèn)的這兩個(gè)變量也稱(chēng)為屬性耸成。

2.創(chuàng)建實(shí)例

使用class語(yǔ)句只能創(chuàng)建一個(gè)類(lèi),而無(wú)法創(chuàng)建類(lèi)的對(duì)象浴鸿,因此要想使用已創(chuàng)建好的類(lèi)井氢,還需要手動(dòng)創(chuàng)建類(lèi)的對(duì)象,創(chuàng)建類(lèi)的過(guò)程又稱(chēng)為類(lèi)的實(shí)例化岳链。下面創(chuàng)建一個(gè)表示特點(diǎn)學(xué)生的實(shí)例花竞,如下圖:
3.繼承

繼承就是在已有類(lèi)的基礎(chǔ)上創(chuàng)建新的類(lèi)的過(guò)程,如果你要編寫(xiě)一個(gè)類(lèi)是另一個(gè)類(lèi)的特殊版本掸哑,可使用繼承约急。一個(gè)類(lèi)繼承另一個(gè)類(lèi)時(shí),它將自動(dòng)獲得另一個(gè)類(lèi)的所有屬性和方法苗分;原有的類(lèi)稱(chēng)為父類(lèi)厌蔽,而新的類(lèi)稱(chēng)為子類(lèi)。子類(lèi)繼承了父類(lèi)的所有屬性和方法摔癣,同時(shí)還可以定義自己的屬性和方法奴饮。
(1)創(chuàng)建子類(lèi)

創(chuàng)建子類(lèi)時(shí),父類(lèi)必須包含在當(dāng)前文件中择浊,且位于子類(lèi)的前面拐云。定義子類(lèi)時(shí),必須在括號(hào)內(nèi)指定父類(lèi)的名稱(chēng)近她。另外叉瘩,使用super()函數(shù)會(huì)將父類(lèi)和子類(lèi)關(guān)聯(lián)起來(lái),如下圖所示:

(2)給子類(lèi)定義屬性和方法
子類(lèi)除了繼承父類(lèi)的屬性和方法外粘捎,還可以再添加新的屬性和方法薇缅,如下圖所示:

(3)方法重寫(xiě)

如果父類(lèi)方法的功能不能滿(mǎn)足你的要求危彩,你可以在子類(lèi)重寫(xiě)父類(lèi)的方法,如下圖所示:
4.將類(lèi)存儲(chǔ)在模塊中

在我們編寫(xiě)程序時(shí)泳桦,有些類(lèi)可能很長(zhǎng)汤徽,為了使程序文件盡可能整潔,Python允許將類(lèi)存儲(chǔ)在模塊中灸撰,然后在主程序中導(dǎo)入所需要的模塊谒府。下面我們將以下內(nèi)容保存到game.py文件中。
5.導(dǎo)入模塊中的類(lèi)

我們?cè)賱?chuàng)建另一個(gè)文件game_characters.py來(lái)導(dǎo)入Game類(lèi)并創(chuàng)建其實(shí)例浮毯,如下圖:

上圖中的程序完疫,只允許調(diào)用Game類(lèi)中的方法,而不能調(diào)用子類(lèi)中的方法债蓝,如果想父類(lèi)和子類(lèi)的方法一起調(diào)用就需要將導(dǎo)入語(yǔ)句修改一下壳鹤,如下圖:
6.在一個(gè)模塊中導(dǎo)入另一個(gè)模塊

如果父類(lèi)和子類(lèi)分別保存在兩個(gè)模塊中,想從保存子類(lèi)的模塊中調(diào)用另一個(gè)模塊中父類(lèi)的方法饰迹,可以使用導(dǎo)入模塊的方法來(lái)實(shí)現(xiàn)芳誓。如下圖,我們新建一個(gè)名為game2.py的模塊啊鸭,在這個(gè)模塊中新建了一個(gè)Extendgame2的類(lèi)锹淌,它是之前建立的Game類(lèi)的子類(lèi)。

接下來(lái)再創(chuàng)建一個(gè)名為game_character2.py的模塊赠制,用來(lái)創(chuàng)建game2.py模塊中Extendgame2子類(lèi)的實(shí)例赂摆,如下圖所示:
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市憎妙,隨后出現(xiàn)的幾起案子库正,更是在濱河造成了極大的恐慌,老刑警劉巖厘唾,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褥符,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抚垃,警方通過(guò)查閱死者的電腦和手機(jī)喷楣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鹤树,“玉大人铣焊,你說(shuō)我怎么就攤上這事『辈” “怎么了曲伊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我坟募,道長(zhǎng)岛蚤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任懈糯,我火速辦了婚禮涤妒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赚哗。我一直安慰自己她紫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布屿储。 她就那樣靜靜地躺著贿讹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扩所。 梳的紋絲不亂的頭發(fā)上围详,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天朴乖,我揣著相機(jī)與錄音祖屏,去河邊找鬼。 笑死买羞,一個(gè)胖子當(dāng)著我的面吹牛袁勺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畜普,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼期丰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了吃挑?” 一聲冷哼從身側(cè)響起钝荡,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舶衬,沒(méi)想到半個(gè)月后埠通,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逛犹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年端辱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虽画。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舞蔽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出码撰,到底是詐尸還是另有隱情渗柿,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布脖岛,位于F島的核電站朵栖,受9級(jí)特大地震影響砾省,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜混槐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一编兄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧声登,春花似錦狠鸳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至脯厨,卻和暖如春铅祸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背合武。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工临梗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人稼跳。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓盟庞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親汤善。 傳聞我的和親對(duì)象是個(gè)殘疾皇子什猖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容