您好,登錄后才能下訂單哦!
我就廢話不多說了,還是直接看代碼吧!
class Car(): """一次模擬汽車的簡單嘗試""" def __init__(self, make, model, year): """初始化描述汽車的屬性""" 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): """打印一條指出汽車里程的消息""" print("This car has " + str(self.odometer_reading) + " miles on it.") def update_odometer(self, mileage): """ 將里程讀數設置為指定的值 禁止將里程表讀數往回調 """ if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You can't roll back an odometer!") def increment_odometer(self, miles): """將里程表讀數增加指定的量""" self.odometer_reading += miles class ElectricCar(Car): """電動汽車的獨特之處""" def _init_(self, make, model, year): """ 電動汽車的獨特之處 初始化父類的屬性,再初始化電動汽車特有的屬性 """ 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()
運行結果:
Traceback (most recent call last): File "E:/Python編程從入門到精通配套資料/Self-taught Python/electric_car.py", line 50, in <module> my_tesla.describe_battery() File "E:/Python編程從入門到精通配套資料/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'
補充知識:python中類的繼承,子類的方法的添加,子類的方法的覆蓋,子類的屬性的添加,及繼續父類的屬性
python如果我們想要繼承一個類的方法,并且不改當前類,我們可以新建一個子類,來繼續他的方法
1、類的繼承,我們先來創建一個Animal的父類,我們再來創建一個dog的子類,dog子類繼承父類Animal的方法,但是里面沒有執行任何代碼,這時我們初始化一下dog子類為dog_1,記得也要傳入身高還有體重,不然會報錯我們可以發現dog_1繼承了Animal里面的屬性及方法。直接輸出一下及調用一下。
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() #輸出內容是 40 20 wow
2、子類的方法的添加,我們同樣可以在dog這個子類里添加新的方法,比如我們添加一個run的方法,再初始化一下dog_1,你會發現dog_1也會有run這個方法。
class Dog(Animal): def run(self): print('running')
dog_1 = Dog(20,40) dog_1.run() #輸出結果是 running
3、子類的方法的覆蓋,我們再添加一個子類Cat,同樣繼承Animal,但是你發現Cat不是wow這樣叫的,所以我們要重新定義一下shout函數,把父類Animal里的函數覆蓋掉。這時我們初始化cat_1調用Cat子類,記得要傳入體重和身高,不然會報錯,然后調用shout方法,你會發現輸出的內容是miao,因為子類里的函數把父類里的函數覆蓋掉了。
class Cat(Animal): def shout(self): print('miao')
cat_1 = Cat(20, 40) cat_1.shout() #輸出結果是 miao
4、子類的屬性的添加,及繼續父類的屬性,如果這時我們要給Cat加一個屬性color,同樣用__init__來定義屬性,但是我們要用super()來繼承父類里的weight和high,color 屬性的性,同樣用self.color賦值,這樣我們用cat_2初始化Cat類的時候就要傳入三個參數,我們輸出一個cat_2.color,可以看到是正常調用的。
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) #輸出結果是 yellow
類的繼承就講到這里,大家有問題歡迎私聊我
以上這篇pycharm實現在子類中添加一個父類沒有的屬性就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。