子類中調用父類的方法


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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM