Python基础-43-Super()使用

    xiaoxiao2022-07-02  102

    前言

    在面向对象-继承部分已经有过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()

    执行结果: 

     

    最新回复(0)