父類名 . __init__(self, ...)
可以將父類中的init中的屬性重復調用,減少代碼的重復
class Vehicle: def __init__(self, name, speed, load, power): self.name = name self.speed = speed self.load = load self.power = power def run(self): print('%s我開動啦'%self.name) class Subway(Vehicle): def __init__(self,name, speed, load, power,line): Vehicle.__init__(self, name, speed, load, power) self.line = line def show_info(self): print(self.name, self.line) line1 = Subway('鄭州地鐵', '30m/s','500','電', '1號') line1.show_info() #調用自身的方法 line1.run() #調用父類中的類方法
父類名 . 函數名(self)
子類中調用父類中類方法的邏輯
class Vehicle: def __init__(self, name, speed, load, power): self.name = name self.speed = speed self.load = load self.power = power def run(self): print('%s我開動啦'%self.name) class Subway(Vehicle): def __init__(self,name, speed, load, power,line): Vehicle.__init__(self, name, speed, load, power) self.line = line def show_info(self): print(self.name, self.line) def run(self): Vehicle.run(self) #加上這句,可以實現同名函數,調用父類中的邏輯 print('%s我來自子類'%self.line) line1 = Subway('鄭州地鐵', '30m/s','500','電', '1號線') line1.show_info() #調用自身的方法 line1.run()
super 方法
調用父類邏輯時,不用擔心類名的變動
class Vehicle: def __init__(self, name, speed, load, power): self.name = name self.speed = speed self.load = load self.power = power def run(self): print('%s我開動啦'%self.name) class Subway(Vehicle): def __init__(self,name, speed, load, power,line): # Vehicle.__init__(self, name, speed, load, power) super().__init__(name, speed, load, power) #super 方法,這樣就不用擔心類名被修改 self.line = line def show_info(self): print(self.name, self.line) def run(self): # Vehicle.run(self) #加上這句,可以實現同名函數,調用父類中的邏輯 super().run() #效果和上面代碼一樣,更適合 print('%s我來自子類'%self.line) line1 = Subway('鄭州地鐵', '30m/s','500','電', '1號線') line1.show_info() #調用自身的方法 line1.run() #調用父類中的類方法
super().__init__(name, speed, load, power) 等同於:
super(Subway, self).__init__(name, speed, load, power)