資源簡(jiǎn)介 (共29張PPT)繼承課前回顧1、屬性默認(rèn)值每個(gè)類(lèi)中的每個(gè)屬性,都是必須有初始值的,哪怕這個(gè)值是0或空字符串(Null)。2、修改屬性值我們可以使用三種不同的方式修改屬性的值:1、直接通過(guò)實(shí)例進(jìn)行修改;2、通過(guò)方法進(jìn)行設(shè)置;3、通過(guò)方法進(jìn)行遞增(增加特定的值)。情境引入繼承是什么?提起 繼承 這兩個(gè)字,最先能夠聯(lián)想到的應(yīng)該就是子繼父業(yè)這個(gè)成語(yǔ)。還記得之前在我們的課程中提及過(guò),在面向?qū)ο缶幊虝r(shí),是可以依據(jù)生活中的思維方式來(lái)進(jìn)行面向?qū)ο缶幊淘O(shè)計(jì)的,同樣,在Python的世界里也存在像我們現(xiàn)實(shí)生活中的那樣,也會(huì)有繼承。循序善誘原來(lái),在Python編程編寫(xiě)類(lèi)時(shí),并非總是要從空白開(kāi)始。如果你接下來(lái)要編寫(xiě)的類(lèi)是另一個(gè)已有、現(xiàn)成的類(lèi)的特殊版本,這時(shí)候我們就可以使用類(lèi)的繼承,即一個(gè)新的類(lèi)來(lái)繼承另一個(gè)已有的類(lèi)。在繼承后,新的類(lèi)將自動(dòng)獲得另一個(gè)類(lèi)的所有屬性和方法。循序善誘在這里我們稱(chēng)原有的類(lèi)為父類(lèi),而新創(chuàng)建的這個(gè)類(lèi)我們稱(chēng)為子類(lèi)。子類(lèi)除了可以繼承父類(lèi)的所有屬性和方法之外,同時(shí)還可以拓展開(kāi)發(fā)、創(chuàng)建定義自己的屬性和方法,以適應(yīng)不同的功能需求。新知教授2、定義子類(lèi)屬性與方法1、子類(lèi)的繼承3、重寫(xiě)父類(lèi)的方法4、課堂總結(jié)子類(lèi)的繼承新知教授在我們創(chuàng)建子類(lèi)的實(shí)例對(duì)象時(shí),Python首先考慮的是給父類(lèi)的所有屬性賦值。為此,子類(lèi)的方法__init__()需要父類(lèi)來(lái)施以援手。新知教授電動(dòng)汽車(chē)是汽車(chē)的發(fā)展延伸,電動(dòng)汽車(chē)包含但不僅限于汽車(chē)所具有的功能特征與外觀樣式。這時(shí),我們就可以認(rèn)為電動(dòng)汽車(chē)類(lèi)繼承了汽車(chē)類(lèi)。思維構(gòu)建我們可以在前面所創(chuàng)建的Car類(lèi)的基礎(chǔ)上,創(chuàng)建新的ElectricCar(電動(dòng)汽車(chē))類(lèi),用ElectricCar類(lèi)繼承Car類(lèi),這樣我們就可以只需要描述電動(dòng)汽車(chē)所特有的屬性、行為程序代碼。思維構(gòu)建class ElectricCar(Car):"""電動(dòng)汽車(chē)的獨(dú)特之處"""def __init__(self, make, model, year):"""初始化父類(lèi)的屬性"""super().__init__(make, model, year)my_electricCar = ElectricCar('特斯拉(Tesla)', 'model s', 2019)print(my_electricCar.get_data())編玩邊學(xué)super()方法函數(shù)是一個(gè)特殊方法函數(shù),它幫助Python將父類(lèi)和子類(lèi)建立關(guān)聯(lián)。讓Python調(diào)用父類(lèi)Car的__init__()方法來(lái)創(chuàng)建子類(lèi)ElectricCar的__init__()方法,目的是讓ElectricCar實(shí)例包含父類(lèi)的所有屬性。定義子類(lèi)屬性與方法新知教授讓一個(gè)類(lèi)繼承另一個(gè)類(lèi)后,可添加、擴(kuò)展與父類(lèi)不同新的屬性和方法。思維構(gòu)建下面來(lái)添加一個(gè)電動(dòng)汽車(chē)上特有的屬性(比如:蓄電池),以及一個(gè)描述該屬性的方法。思維構(gòu)建class ElectricCar(Car):def __init__(self, make, model, year):super().__init__(make, model, year)self.battery_size = 70def battery_describe(self):print("電動(dòng)汽車(chē)電池容量是:" + str(self.battery_size) + "-kWh。")my_electricCar = ElectricCar('特斯拉(Tesla)', 'model s', 2020)print(my_electricCar.get_data())my_electricCar.battery_describe()編玩邊學(xué)我們添加了新的電動(dòng)汽車(chē)類(lèi)特有的屬性self. battery_size。根據(jù)ElectricCar類(lèi)創(chuàng)建的所有實(shí)例對(duì)象都將包含battery_size這個(gè)屬性信息,但所有Car實(shí)例對(duì)象都不包含它編玩邊學(xué)我們還添加了一個(gè)名為battery_describe()的方法函數(shù),battery_describe()方法功能是打印有關(guān)電池的信息。思維構(gòu)建如果一個(gè)屬性或者方法是任何汽車(chē)都有的,而不是電動(dòng)汽車(chē)特有的,就應(yīng)將這個(gè)屬性或者方法加入到Car類(lèi)。這樣,繼承使用Car類(lèi)的子類(lèi)將獲得相應(yīng)的功能,而ElectricCar類(lèi)只包含處理電動(dòng)汽車(chē)特有屬性和行為的程序代碼,做到分工明確、條理清晰。重寫(xiě)父類(lèi)的方法新知教授對(duì)于父類(lèi)中的方法函數(shù),只要它不符合子類(lèi)所要描述、模擬的實(shí)物行為,我們都可以通過(guò)繼承行為,在子類(lèi)中對(duì)其繼承的父類(lèi)方法函數(shù)進(jìn)行重新改寫(xiě)。思維構(gòu)建可在子類(lèi)中定義一個(gè)這樣的方法,但它要跟重寫(xiě)的父類(lèi)方法同名。這樣的話(huà),Python就不會(huì)考慮父類(lèi)的方法,而只關(guān)注你在子類(lèi)中定義的同名、新功能的方法。思維構(gòu)建假設(shè)Car類(lèi)有一個(gè)名為energy()的方法,energy()方法的功能是描述汽車(chē)行駛的能量之源,雖然普通汽車(chē)跟電動(dòng)汽車(chē)一樣都需要有描述它的能量之源的方法,兩者所要描述的內(nèi)容是不同的。對(duì)普通汽車(chē)來(lái)說(shuō)是燃油,對(duì)全電動(dòng)汽車(chē)來(lái)說(shuō)是是蓄電池存儲(chǔ)的電能。編玩邊學(xué)class Car():def energy(self):print("傳統(tǒng)汽車(chē)會(huì)使用汽油為燃料為汽車(chē)供能!")class ElectricCar(Car):def energy(self):print("電動(dòng)汽車(chē)會(huì)使用電能為汽車(chē)供能!")如果有人對(duì)電動(dòng)汽車(chē)調(diào)用energy()方法,Python將會(huì)忽略父類(lèi)Car中的energy()方法,轉(zhuǎn)而運(yùn)行上述代碼。思維構(gòu)建現(xiàn)在,我們可以在使用繼承時(shí),讓子類(lèi)保留從父類(lèi)那里繼承而來(lái)的“精華”,并剔除那些不需要的“糟粕”。實(shí)踐創(chuàng)作完成本節(jié)課的程序,使用繼承將本節(jié)課的電動(dòng)汽車(chē)類(lèi)補(bǔ)充完整。課堂總結(jié)1、子類(lèi)的繼承子類(lèi)除了可以繼承父類(lèi)的所有屬性和方法之外,同時(shí)還可以拓展開(kāi)發(fā)、創(chuàng)建定義自己的屬性和方法,以適應(yīng)不同的功能需求。2、定義子類(lèi)屬性與方法讓一個(gè)類(lèi)繼承另一個(gè)類(lèi)后,可添加、擴(kuò)展與父類(lèi)不同新的屬性和方法。3、重寫(xiě)父類(lèi)的方法對(duì)于父類(lèi)中的方法函數(shù),只要它不符合子類(lèi)所要描述、模擬的實(shí)物行為,我們都可以通過(guò)繼承行為,在子類(lèi)中對(duì)其繼承的父類(lèi)方法函數(shù)進(jìn)行重新改寫(xiě)。同學(xué)們,要加油哦!下節(jié)課見(jiàn)啦分享交流同學(xué)們今天寫(xiě)代碼有沒(méi)有遇到什么問(wèn)題?演示今天打印的代碼 展開(kāi)更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來(lái)源于二一教育資源庫(kù)