久等了各位。繼續把剩下的繼續做完!前面文章的測試代碼由于頭條的代碼塊有問題。出現了縮進問題。如果大家測試得改一下縮進。就測試正常
喜歡python就關注冠山巡山使。 我將跟大家一塊自學完python語言。
9.3.4 重寫父類的方法
對于父類的方法,只要它不符合子類模擬的實物的行爲,都可對其進行重寫。爲此,可在子類中定義一個這樣的方法,即它與要重寫的父類方法同名。這樣, Python將不會考慮這個父類方法,而只關注你在子類中定義的相應方法。
假設Car類有一個名爲fill_gas_tank()的方法,它對全電動汽車來說毫無意義,因此你可能想重寫它。下面演示了一種重寫方式:
代碼1(測試正常)
class Car(): #Car類的代碼 """一次模擬汽車的簡單嘗試""" def __init__(self, make, model, year): """ 電動汽車的獨特之處 初始化父類的屬性,再初始化電動汽車特有的屬性 """ self.make = make self.model = model self.year = year self.odometer_reading = 0 self.battery_size = 70 #添加一個電瓶屬性 def fill_gas_tank(self): """這輛汽車有郵箱""" print("這個汽車有郵箱啊") def describe_battery(self): """打印一條描述電瓶容量的消息""" print("This car has a " + str(self.battery_size) + "-kWh battery.") def get_descriptive_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): #定義了子類ElectricCar,定義子類時必須在括號內指定父類的名稱 """電動汽車的獨特之處""" def __init__(self, make, model, year): #方法__init__()接受創建Car實例所需的信息 """初始化父類的屬性""" super(ElectricCar, self).__init__(make, model, year) #函數super()需要兩個實參:子類名和對象self。爲幫助Python將父類和子類關聯起來,這些實參必不可少。 my_tesla = ElectricCar('tesla', 'model s', 2016) #創建ElectricCar類的一個實例,並將其存儲在變量my_tesla中 print(my_tesla.get_descriptive_name()) my_tesla.describe_battery() my_tesla.fill_gas_tank()
這裏在子類寫上同名方法
代碼2(測試正常)
class Car(): #Car類的代碼 """一次模擬汽車的簡單嘗試""" def __init__(self, make, model, year): """ 電動汽車的獨特之處 初始化父類的屬性,再初始化電動汽車特有的屬性 """ self.make = make self.model = model self.year = year self.odometer_reading = 0 self.battery_size = 70 #添加一個電瓶屬性 def fill_gas_tank(self): """這輛汽車有郵箱""" print("這個汽車有郵箱啊") def describe_battery(self): """打印一條描述電瓶容量的消息""" print("This car has a " + str(self.battery_size) + "-kWh battery.") def get_descriptive_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): #定義了子類ElectricCar,定義子類時必須在括號內指定父類的名稱 """電動汽車的獨特之處""" def __init__(self, make, model, year): #方法__init__()接受創建Car實例所需的信息 """初始化父類的屬性""" super(ElectricCar, self).__init__(make, model, year) #函數super()需要兩個實參:子類名和對象self。爲幫助Python將父類和子類關聯起來,這些實參必不可少。 def fill_gas_tank(self): """電動車沒有郵箱""" print("這個電動汽車不需要郵箱") my_tesla = ElectricCar('tesla', 'model s', 2016) #創建ElectricCar類的一個實例,並將其存儲在變量my_tesla中 print(my_tesla.get_descriptive_name()) my_tesla.describe_battery() my_tesla.fill_gas_tank()
現在,如果有人對電動汽車調用方法 fill_gas_tank(), Python將忽略 Car類中的方法
fill_gas_tank(),轉而運行上述代碼。使用繼承時,可讓子類保留從父類那裏繼承而來的精華,
並剔除不需要的糟粕。
因爲後面代碼篇幅比較大。大家看起來也不便。所以自學教程我會分割的比較多些。
今天學到這裏。明天繼續 類 的學習
如果喜歡可以 點贊+關注冠山巡山使 or 評論+轉發此文章讓其他喜歡Python的同學看到吆 。明天見!
關注冠山巡山使+私信:“編輯器”三個字 就可以有這個編輯器的下載地址了。 關注冠山巡山使+私信:“自學python”可以下載此教程!(我是參考此教程做的自學課程。大多數人兒只是下載下來。看完的很少。希望能跟我一塊自學完!)