父類名 . __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)
