Python學習筆記(十一)繼承__Python

來源:互聯網
上載者:User

1.子類的方法__init__()

    一個類繼承另一個類時,他將自動獲得另一個類的所有屬性和方法。原有的類稱為父類,而新類稱為子類。子類繼承其父類的所有屬性和方法,同時還可以定義自己的屬性和方法。

  建立子類時,父類必須包含在當前檔案中,且位於子類前面

  定義子類時,必須在括弧內指定父類的名稱。

class Car(object):"""docstring for Car"""def __init__(self, make, model, year):self.make = makeself.model = modelself.year = yearself.reading = 0def get_name(self):long_name = str(self.year) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odometer(self):print(str(self.reading))def updata_odometer(self, mileage):self.reading = mileagedef increment_odometer(self, miles):self.reading += milesmy_car = Car('audi', 'a4', 2016)print(my_car.get_name())my_car.reading = 23my_car.read_odometer()my_car.updata_odometer(66)my_car.read_odometer()my_car.increment_odometer(33)my_car.read_odometer()class ElectricCar(Car):"""docstring for ElectricCar"""def __init__(self, make, model, year):'''初始化父類的屬性'''super(ElectricCar, self).__init__(make, model, year)#self.arg = argmy_tesla = ElectricCar('tesla', 'model s', 2016)print(my_tesla.get_name())Result:       2016 Tesla Model S
對於Python 2.7 中的繼承來說,函數super()需要兩個實參:子類名和對象self。我目前使用的編譯器為Sublime Text 3,加不加這兩個參數都可正常運行。

2.給定子類定義屬性和方法

  讓一個子類繼承另一個類後,可添加區分子類和父類所需的新屬性和方法

class ElectricCar(Car):"""docstring for ElectricCar"""def __init__(self, make, model, year):'''初始化父類的屬性'''super().__init__(make, model, year)#self.arg = argself.battery = 40def describe_battery(self):print("This car has a " + str(self.battery) + "-KWh battery")my_tesla = ElectricCar('tesla', 'model s', 2016)my_tesla.describe_battery()print(my_tesla.get_name())Result:       This car has a 40-KWh battery
11
   3.重寫父類方法

      對於父類的方法,只要它不符合子類類比的實物的行為,都可以對其進行重寫。重寫的方法要與父類方法同名,當你再調用該方法時,Python只關心子類中定義的相應方法。

  4.將執行個體用作屬性

    

class ElectricCar(Car):"""docstring for ElectricCar"""def __init__(self, make, model, year):'''初始化父類的屬性'''super().__init__(make, model, year)#self.arg = argself.battery = Battery()#def describe_battery(self):#print("This car has a " + str(self.battery) + "-KWh battery")my_tesla = ElectricCar('tesla', 'model s', 2016)my_tesla.battery.describe_battery()print(my_tesla.get_name())Result:         This car has a 40-KWh battery        2016 Tesla Model S




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.