这里记录一下python中的super()的两个参数需要注意的关键点。
具体来说如以下代码所示:
# 子类B 父类A
class B(A):
def __init__(self):
super(B,self).__init__()
super(B, self)
中self指向B,这句代码就是说找到self的mro表中B的下一个类,也就是找到B的父类A
super的工作原理如下:
# cls代表类,inst代表实例
def super(cls, inst):
mro = inst.__class__.mro()
return mro[mro.index(cls) + 1]
其中mro表是指类继承的顺序,super(cls, inst)
获得的是cls在inst的MRO列表中下一个类。
mro表的具体计算在python3.x版本之后采用的是c3算法,具体关于c3算法的解释可以参考以下博文:Python多重继承问题-MRO和C3算法
标签:__,mro,Python,self,详解,inst,super,cls From: https://www.cnblogs.com/pluto-/p/17004539.html