天天看点

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