手记

【2023年】第53天 super函数以及多重继承

一、super函数

  • python子类继承父类的方法而使用的关键字,当子类继承父类后,就可以使用父类的方法了
# coding:utf-8

class Parent(object):
    def __init__(self, p):
        print('hello i am parent %s' % p)


class Child(Parent):
    def __init__(self, c, p):
        super(Child, self).__init__('p')
        print('hello i am child %s' % c)


if __name__ == "__main__":
    c = Child(c='Child', p='Parent')
  • 这里需要注意的是super函数可以传入参数,也可以不传入参数,但是为了更好的兼容python2的语法结构,所以我们尽量使用传入参数的写法。

二、类的多重继承

  • 可以继承多个基类/父类。
class Child(Parent1, Parent2, Parent3 ...)
将被继承的类放入子类的参数位中,用逗号隔开
从左向右依次继承
# coding:utf-8

# 1 2 个父类
class Tool(object):
    def work(self):
        return 'tool work'

    def car(self):
        return 'car will run'


class Food(object):
    def work(self):
        return 'food work'

    def cake(self):
        return 'i like cake'


# 继承父类的子类
class Person(Tool, Food):
    pass


if __name__ == "__main__":
    p = Person()
    p_car = p.car()
    p_cake = p.cake()
    print(p_car)
    print(p_cake)

    p_work = p.work()
    print(p_work)
    print(Person.__mro__)  # 查看完整的继承链
  • 首先我们定义两个父类,Tool和Food。
  • 然后在两个父类下都定义work函数。
  • 定义子类,继承于两个父类。
  • 实例化后可以调用到父类中的函数。
  • 当子类中进行多重继承的时候把任何一个父类写到前面的时候就会先继承这个父类。
  • 可以使用__mro__查看Person子类的继承链。
0人推荐
随时随地看视频
慕课网APP