天天看點

python單繼承中super()用法

  • super().__init__

    相對于類名.

    __init__

    ,在單繼承上⽤法基本⽆差
  • 單繼承時,使⽤super⽅法,則不能全部傳遞,隻能傳⽗類⽅法所需的參數,否則會報錯
class A(object):
    def __init__(self, name):
        print('A 的__init__開始被調⽤')
        self.name = name


class B(A):
    def __init__(self, name, age):
        print("B 的__init__開始被調用")
        self.age = age
        super().__init__(name)
        print('B 的__init__ 結束調用')


class C(B):
    def __init__(self, name, age, gender):
        print('C 的init開始被調⽤')
        self.gender = gender
        super().__init__(name, age)  # 單繼承不能提供全部參數
        print('C 的init結束被調⽤')


gs = C('林志玲', 18, '女')

print('姓名:', gs.name)
print('年齡:', gs.age)

# 輸出結果
C 的init開始被調⽤
B 的__init__開始被調用
A 的__init__開始被調⽤
B 的__init__ 結束調用
C 的init結束被調⽤
姓名: 林志玲
年齡: 18