廖雪峰Python3教程疑難理解(4):繼承、多態(tài)、改寫(xiě)妒穴,順便用一下super()

獲取更多文章和更新宋税,請(qǐng)關(guān)注我的個(gè)人主頁(yè):https://leiting6.cn

很多跟我一樣只有一點(diǎn)C語(yǔ)言基礎(chǔ)的朋友,在學(xué)習(xí)如Python讼油、Java這樣的面向?qū)ο蟮恼Z(yǔ)言的時(shí)候杰赛,走到繼承這一步總會(huì)覺(jué)得非常生澀難懂。其實(shí)廖老師這一節(jié)將的非常生動(dòng)詳細(xì)矮台,結(jié)合網(wǎng)上一些博客文章乏屯,也能有一個(gè)不錯(cuò)的理解。

面向?qū)ο笳Z(yǔ)言的典型特征就是可以創(chuàng)建一個(gè)類(lèi)瘦赫,并且其他的類(lèi)可以作為子類(lèi)繼承父類(lèi)的內(nèi)容辰晕。網(wǎng)上好多例子都是以Person、Father确虱、Student含友、Animal為素材來(lái)講的,甚至于有一些喪心病狂的直接用class A校辩、class B窘问,類(lèi)里面的一些方法比如學(xué)生走路啊、小狗奔跑之類(lèi)召川,太過(guò)于簡(jiǎn)單導(dǎo)致抽象南缓,看起來(lái)枯燥難懂。

小小吐槽一下荧呐。我自己舉的例子汉形,也還是以Animal作為素材,不過(guò)盡量在內(nèi)部方法上把內(nèi)容做豐富一些倍阐,讓其實(shí)現(xiàn)的功能和參數(shù)關(guān)聯(lián)程度高一點(diǎn)概疆,不至于太抽象。代碼如下(對(duì)代碼就不做多少分析了峰搪,注釋寫(xiě)的比較詳細(xì)岔冀,實(shí)際結(jié)構(gòu)很簡(jiǎn)單):

# -*- coding: utf-8 -*-

class Animal():
    '''
    Animal類(lèi)初始化方法,創(chuàng)建2個(gè)基本屬性概耻,name和age
    '''
    def __init__(self, name, age):  # self參數(shù)自動(dòng)傳入使套,name和age需要手動(dòng)傳入
        self.name = name            # 帶有self.表明是Animal類(lèi)自己的參數(shù)
        self.age = age              # 賦值操作,將外部傳入的數(shù)值賦值給Animal類(lèi)的參數(shù)
        
    '''
    Animal類(lèi)中的一個(gè)功能方法:打招呼
    該功能函數(shù)用到了上面初始化過(guò)程中創(chuàng)建的2個(gè)參數(shù)
    '''    
    def say_hello(self):
        print('嗨鞠柄,你們好侦高,我的名字是%s,我今年%d歲了.' % (self.name, self.age))
        
    '''
    Animal類(lèi)的另一個(gè)功能方法:顯示心情
    '''
    def show_mood(self, mood):
        print('%s今天看起來(lái)很%s!' % (self.name, mood))
        
class Dog(Animal):
    '''
    新建Dog類(lèi)厌杜,繼承Animal類(lèi)
    和上面差不多奉呛,Dog類(lèi)的初始化方法
    不同的是计螺,name和age參數(shù)在父類(lèi)中已經(jīng)初始化過(guò)
    因此在子類(lèi)Dog中沒(méi)必要在重復(fù)賦值語(yǔ)句
    所以用super(),保證相同的參數(shù)只初始化一次
    '''
    def __init__(self, name, age, color):       # 要注意的是瞧壮,需要用到的形參還是要一一列出
        super(Dog, self).__init__(name, age)    # 沒(méi)必要二次賦值的參數(shù)用super來(lái)繼承
        self.color = color                      # 新增的參數(shù)需要編寫(xiě)新的賦值語(yǔ)句
    
    '''
    這是一個(gè)已經(jīng)改寫(xiě)的方法
    相比較于父類(lèi)中的say_hello方法登馒,這里打招呼的內(nèi)容增加了毛色的描述
    '''
    def say_hello(self):
        print('嗨,你們好咆槽,我的名字是%s陈轿,我今年%d歲了,我的毛色是%s罗晕。' % (self.name, self.age, self.color))
        
if __name__ == '__main__':
    # Dog繼承Animal济欢,則my_dog是多態(tài)的,即使Dog類(lèi)型小渊,也是Animal類(lèi)型
    my_dog = Dog('Coba', 15, '黃色')
    # my_dog調(diào)用了say_hello方法,由于在子類(lèi)Dog中這個(gè)方法已經(jīng)改寫(xiě)茫叭,所以打印的結(jié)果是改寫(xiě)后的內(nèi)容
    my_dog.say_hello()
    # show_mood方法沒(méi)有改寫(xiě)酬屉,所以直接調(diào)用父類(lèi)Animal中對(duì)應(yīng)的方法
    my_dog.show_mood('開(kāi)心')

代碼打印的結(jié)果:

D:\Python\廖雪峰教程\繼承和多態(tài)>python 1.py
嗨,你們好揍愁,我的名字是Coba呐萨,我今年15歲了,我的毛色是黃色莽囤。
Coba今天看起來(lái)很開(kāi)心!

我自己寫(xiě)的例子里谬擦,只有一個(gè)父類(lèi)Animal、一個(gè)子類(lèi)Dog以及一個(gè)實(shí)例my_dog朽缎;父類(lèi)中的方法惨远,有在子類(lèi)中改寫(xiě)的,有沒(méi)有改寫(xiě)的话肖;實(shí)例my_dog自然具有多態(tài)特征北秽,在調(diào)用類(lèi)中方法的時(shí)候,無(wú)需考慮方法是在哪里創(chuàng)建的最筒、是否被改寫(xiě)贺氓,一切遵循“開(kāi)閉”原則。

這里的super只是用來(lái)繼承父類(lèi)Animal中的賦值語(yǔ)句床蜘,屬于很簡(jiǎn)單的應(yīng)用辙培;其實(shí)super更大的意義在于類(lèi)的多重繼承,這個(gè)以后自己理解更透徹了再舉例說(shuō)明邢锯,網(wǎng)上一堆class ABCDEFG看的頭疼...

不知道大家看到這個(gè)例子有沒(méi)有對(duì)Python的面向?qū)ο髮傩岳斫飧逦锶铮凑绻沂浅鯇W(xué)者,我是更希望看到這樣的例子的弹囚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厨相,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛮穿,老刑警劉巖庶骄,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異践磅,居然都是意外死亡单刁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)府适,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)羔飞,“玉大人,你說(shuō)我怎么就攤上這事檐春÷咛剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵疟暖,是天一觀的道長(zhǎng)卡儒。 經(jīng)常有香客問(wèn)我,道長(zhǎng)俐巴,這世上最難降的妖魔是什么骨望? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮欣舵,結(jié)果婚禮上擎鸠,老公的妹妹穿的比我還像新娘。我一直安慰自己缘圈,他們只是感情好劣光,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著准验,像睡著了一般赎线。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糊饱,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天垂寥,我揣著相機(jī)與錄音,去河邊找鬼另锋。 笑死滞项,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的夭坪。 我是一名探鬼主播文判,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼室梅!你這毒婦竟也來(lái)了戏仓?” 一聲冷哼從身側(cè)響起疚宇,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赏殃,沒(méi)想到半個(gè)月后敷待,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仁热,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年榜揖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抗蠢。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡举哟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迅矛,到底是詐尸還是另有隱情妨猩,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布秽褒,位于F島的核電站册赛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏震嫉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一牡属、第九天 我趴在偏房一處隱蔽的房頂上張望票堵。 院中可真熱鬧,春花似錦逮栅、人聲如沸悴势。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)特纤。三九已至,卻和暖如春侥加,著一層夾襖步出監(jiān)牢的瞬間捧存,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工担败, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昔穴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓提前,卻偏偏與公主長(zhǎng)得像吗货,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狈网,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 面向?qū)ο笾饕槍?duì)面向過(guò)程宙搬。 面向過(guò)程的基本單元是函數(shù)笨腥。 什么是對(duì)象:EVERYTHING IS OBJECT(萬(wàn)物...
    sinpi閱讀 1,054評(píng)論 0 4
  • 1.import static是Java 5增加的功能,就是將Import類(lèi)中的靜態(tài)方法,可以作為本類(lèi)的靜態(tài)方法來(lái)...
    XLsn0w閱讀 1,222評(píng)論 0 2
  • 2014年的蘋(píng)果全球開(kāi)發(fā)者大會(huì)(WWDC)勇垛,當(dāng)Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,294評(píng)論 0 9
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法脖母,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法窥摄,繼承相關(guān)的語(yǔ)法镶奉,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,631評(píng)論 18 399
  • 不知道從什么時(shí)候開(kāi)始崭放,“雞湯”變成了一個(gè)有毒的標(biāo)簽哨苛,好好的正能量的東西,不知怎么在口口相傳中币砂,帶上了毒性建峭? 雞湯嘛...
    秉筆春秋呂書(shū)生閱讀 265評(píng)論 8 10