pycharm實(shí)現(xiàn)在子類(lèi)中添加一個(gè)父類(lèi)沒(méi)有的屬性
我就廢話不多說(shuō)了,還是直接看代碼吧!
class Car(): """一次模擬汽車(chē)的簡(jiǎn)單嘗試""" def __init__(self, make, model, year): """初始化描述汽車(chē)的屬性""" self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_description_name(self): """返回整潔的描述性信息""" long_name = str(self.year) + ' ' + self.make + ' ' + self.model return long_name.title() def read_odometer(self): """打印一條指出汽車(chē)?yán)锍痰南?"" print("This car has " + str(self.odometer_reading) + " miles on it.") def update_odometer(self, mileage): """ 將里程讀數(shù)設(shè)置為指定的值 禁止將里程表讀數(shù)往回調(diào) """ if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You can't roll back an odometer!") def increment_odometer(self, miles): """將里程表讀數(shù)增加指定的量""" self.odometer_reading += miles class ElectricCar(Car): """電動(dòng)汽車(chē)的獨(dú)特之處""" def _init_(self, make, model, year): """ 電動(dòng)汽車(chē)的獨(dú)特之處 初始化父類(lèi)的屬性,再初始化電動(dòng)汽車(chē)特有的屬性 """ super().__init__(make, model, year) self.battery_size = 70 def describe_battery(self): """打印一條描述電瓶容量的消息""" print("This car has a " + str(self.battery_size) + "-kwh battery.") my_tesla = ElectricCar('tesla', 'model s', 2016) print(my_tesla.get_description_name()) my_tesla.describe_battery()
運(yùn)行結(jié)果:
Traceback (most recent call last): File "E:/Python編程從入門(mén)到精通配套資料/Self-taught Python/electric_car.py", line 50, in <module> my_tesla.describe_battery() File "E:/Python編程從入門(mén)到精通配套資料/Self-taught Python/electric_car.py", line 46, in describe_battery print("This car has a " + str(self.battery_size) + "-kwh battery.") AttributeError: 'ElectricCar' object has no attribute 'battery_size'
補(bǔ)充知識(shí):python中類(lèi)的繼承,子類(lèi)的方法的添加,子類(lèi)的方法的覆蓋,子類(lèi)的屬性的添加,及繼續(xù)父類(lèi)的屬性
python如果我們想要繼承一個(gè)類(lèi)的方法,并且不改當(dāng)前類(lèi),我們可以新建一個(gè)子類(lèi),來(lái)繼續(xù)他的方法
1、類(lèi)的繼承,我們先來(lái)創(chuàng)建一個(gè)Animal的父類(lèi),我們?cè)賮?lái)創(chuàng)建一個(gè)dog的子類(lèi),dog子類(lèi)繼承父類(lèi)Animal的方法,但是里面沒(méi)有執(zhí)行任何代碼,這時(shí)我們初始化一下dog子類(lèi)為dog_1,記得也要傳入身高還有體重,不然會(huì)報(bào)錯(cuò)我們可以發(fā)現(xiàn)dog_1繼承了Animal里面的屬性及方法。直接輸出一下及調(diào)用一下。
class Animal(): def __init__(self, weight, high): self.weight = weight self.high = high def shout(self): print('wow')
class Dog(Animal): pass
dog_1 = Dog(20,40) print(dog_1.high) print(dog_1.weight) dog_1.shout() #輸出內(nèi)容是 40 20 wow
2、子類(lèi)的方法的添加,我們同樣可以在dog這個(gè)子類(lèi)里添加新的方法,比如我們添加一個(gè)run的方法,再初始化一下dog_1,你會(huì)發(fā)現(xiàn)dog_1也會(huì)有run這個(gè)方法。
class Dog(Animal): def run(self): print('running')
dog_1 = Dog(20,40) dog_1.run() #輸出結(jié)果是 running
3、子類(lèi)的方法的覆蓋,我們?cè)偬砑右粋€(gè)子類(lèi)Cat,同樣繼承Animal,但是你發(fā)現(xiàn)Cat不是wow這樣叫的,所以我們要重新定義一下shout函數(shù),把父類(lèi)Animal里的函數(shù)覆蓋掉。這時(shí)我們初始化cat_1調(diào)用Cat子類(lèi),記得要傳入體重和身高,不然會(huì)報(bào)錯(cuò),然后調(diào)用shout方法,你會(huì)發(fā)現(xiàn)輸出的內(nèi)容是miao,因?yàn)樽宇?lèi)里的函數(shù)把父類(lèi)里的函數(shù)覆蓋掉了。
class Cat(Animal): def shout(self): print('miao')
cat_1 = Cat(20, 40) cat_1.shout() #輸出結(jié)果是 miao
4、子類(lèi)的屬性的添加,及繼續(xù)父類(lèi)的屬性,如果這時(shí)我們要給Cat加一個(gè)屬性color,同樣用__init__來(lái)定義屬性,但是我們要用super()來(lái)繼承父類(lèi)里的weight和high,color 屬性的性,同樣用self.color賦值,這樣我們用cat_2初始化Cat類(lèi)的時(shí)候就要傳入三個(gè)參數(shù),我們輸出一個(gè)cat_2.color,可以看到是正常調(diào)用的。
class Cat(Animal): def __init__(self, weight, high, color): super().__init__(weight, high) self.color = color def shout(self): print('miao')
cat_2 = Cat(20, 40, 'yellow') print(cat_2.color) #輸出結(jié)果是 yellow
類(lèi)的繼承就講到這里,大家有問(wèn)題歡迎私聊我
以上這篇pycharm實(shí)現(xiàn)在子類(lèi)中添加一個(gè)父類(lèi)沒(méi)有的屬性就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 列表 sort()函數(shù)使用實(shí)例詳解
這篇文章主要介紹了Python 列表 sort()函數(shù)使用詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07python求一個(gè)字符串的所有排列的實(shí)現(xiàn)方法
這篇文章主要介紹了python求一個(gè)字符串的所有排列的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02python中函數(shù)默認(rèn)值使用注意點(diǎn)詳解
下面小編就為大家?guī)?lái)一篇python中函數(shù)默認(rèn)值使用注意點(diǎn)詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06python抽樣方法解讀及實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了python抽樣方法解讀及實(shí)現(xiàn)過(guò)程講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02使用OpenCV-python3實(shí)現(xiàn)滑動(dòng)條更新圖像的Canny邊緣檢測(cè)功能
這篇文章主要介紹了使用OpenCV-python3實(shí)現(xiàn)滑動(dòng)條更新圖像的Canny邊緣檢測(cè)功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12python飛機(jī)大戰(zhàn)pygame游戲框架搭建操作詳解
這篇文章主要介紹了python飛機(jī)大戰(zhàn)pygame游戲框架搭建操作,設(shè)計(jì)pygame模塊游戲創(chuàng)建、初始化、精靈組設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2019-12-12python實(shí)現(xiàn)連續(xù)變量最優(yōu)分箱詳解--CART算法
今天小編就為大家分享一篇python實(shí)現(xiàn)連續(xù)變量最優(yōu)分箱詳解--CART算法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11TensorFlow使用Graph的基本操作的實(shí)現(xiàn)
這篇文章主要介紹了TensorFlow使用Graph的基本操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04