Python调用父类方法之super()
super()方法:
super() 方法的语法:
super(type [object-or-type])
- type -- 类。
- object-or-type -- 类,一般是 self
super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。在super方法中包含了CJ算法(确保每个类被调用一次)。
具体用法如下图所示:
在多继承中使用super方法,可将本身类和继承的类放在一个元组中,可以用__mro__来查看元组中的内容,如图所示:
mro是什么呢?对于你定义的每一个类,Python 会计算出一个方法解析顺序(Method Resolution Order, MRO)列表,它代表了类继承的顺序。
这样ReConverter类就包含了父类的所有属性:(<class '__main__.ReConverter'>, <class 'werkzeug.routing.BaseConverter'>, <class 'object'>)