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()

执行结果: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值