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

执行结果: 

 

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