多继承中MRO顺序详解

     1. 单继承
        子类调用父类的方法的方式:
          1. super().__init__()
          2. Parent.__init__(self)
          3. super(类名,self).__init__()

          单继承中, 使用父类名与super()调用父类的方法效果是一致的,没有区别

    2. 多继承中使用父类名调用父类的方法
       多继承中使用父类名调用父类的方法会出现父类的方法执行多次

    3. 多继承中使用super()调用父类的方法
        - mro顺序: Method Resolution Order :
            方法解决顺序,方法解析顺序用于描述在Python多继承中子类调用多个父类相同方法的顺序,内部通过C3算法去解析
        - 类名.__mro__ : 用元组的形式存放子类对象调用多个父类相同方法的顺序(mro算法执行的结果)

        - super()与类名.__mro__的关系:
          supe0

    小结: 
       1. 单继承中,super().__init__相对于类名.__init__,基本无差别
       2. 多继承中,super方法能保证每个父类的方法只会执行一次,而使用类名的方法会导致方法被执行多次,在多继承中,应用使用super来调用父类的方法
       3. super()内部是通过mro算法来确定调用哪个父类的方法   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值