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算法来确定调用哪个父类的方法
多继承中MRO顺序详解
最新推荐文章于 2022-07-16 21:05:22 发布