Python基礎-43-Super()使用

前言

在面向對象-繼承部分已經有過super繼承的使用,這裏獨立出來梳理一下

格式:super().方法(參數)  # 對python3有效

 

Super()

代碼部分:

# super()繼承

class People():
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def eat(self):
        print("---- 這是調用了People的eat ----")

class Teacher(People):
    # 初始化Teacher的時候老師的屬性不僅僅有name和age,還有teach_subject屬性
    # 需要繼承父類的__init___基礎上再加上teach_subject屬性
    def __init__(self,name,age,teach_subject):
        super().__init__(name,age)  # 繼承父類的__init__方法
        self.teach_subject = teach_subject
        print("姓名是:{},年齡是:{}, 教學科目:{}".format(self.name, self.age, self.teach_subject))

    # 父類的eat不滿足我們的需求,我們需要在繼承父類eat的基礎上繼續增加我們想要的
    def eat(self):
        super().eat()  # 繼承並調用父類eat方法
        print("---- 這是調用了Teacher的eat ----")

teac = Teacher("suner",20,"數學")
teac.eat()

執行結果: 

 

 

使用super的優勢在於繼承多個類的時候不需要寫類名,可以直接用super關鍵字代替,即使之後父類名稱修改了,子類也不需要隨即更改

代碼部分:

class A():
    def a_func_01(self):
        print("---- a_func_01 ----")

    def a_func_02(self):
        print("---- a_func_02 ----")

class B():
    def b_func_01(self):
        print("---- b_func_01 ----")

    def b_func_02(self):
        print("---- b_func_02 ----")

class C(B,A):

    def c_func_01(self):
        super().a_func_01()  # 繼承A類方法
        super().b_func_01()  # 繼承B類方法

c = C()
c.c_func_01()

執行結果: 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章