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