Python中的继承和super()

本文详细介绍了如何在Python中通过父类名或super()调用父类方法,重点讲解了MRO顺序的作用以及在单继承和多继承情况下super()的使用差异,指出多继承时使用super()方法的优势和参数传递规则。
摘要由CSDN通过智能技术生成

父类方法的调用

  • 可以使用父类名.方法名来调用
  • 也可以使用super().方法名来调用

MRO顺序

Python官方采用了一个算法将复杂结构上所有的类全部都映射到一个线性顺序上,而根据这个顺序就能 够保证所有的类都会被构造一次。这个顺序就是MRO顺序。

查看MRO顺序

类名.mro()

类名.__mro__

单继承中的super()

直接去找父类中的方法

多继承中的super()

按照mro顺序来执行,super()调用的是mro顺序中的后一个类的方法

总结 

1、MRO保证了多继承情况 每个类只出现一次

2、super().__init__相对于类名.__init__,在单继承上用法基本无差

3、但在多继承上有区别,super方法能保证每个父类的方法只会执行一次,而使用类名的方法会导致方法被执行多次

4、是由多继承时,使用super方法,对父类的传参数,应该于python中super的算法导致的原因,必须把参数全部传递,否则会报错

5、多继承时,相对于使用类名.__init__方法,要把每个父类全部写一遍, 而使用super方法,只需写一句话便执行了全部父类的方法,这也是为何多继承需要全部传参的一个原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值