Python调用父类方法之super()

super()方法:

super() 方法的语法:

super(type [object-or-type])

  • type -- 类。
  • object-or-type -- 类,一般是 self

    super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。在super方法中包含了CJ算法(确保每个类被调用一次)。
具体用法如下图所示:

Python调用父类方法之super()

在多继承中使用super方法,可将本身类和继承的类放在一个元组中,可以用__mro__来查看元组中的内容,如图所示:

Python调用父类方法之super()

mro是什么呢?对于你定义的每一个类,Python 会计算出一个方法解析顺序(Method Resolution Order, MRO)列表,它代表了类继承的顺序。

这样ReConverter类就包含了父类的所有属性:(<class '__main__.ReConverter'>, <class 'werkzeug.routing.BaseConverter'>, <class 'object'>)

 

大功告成!