Python super() review
super()作用
1.super()
本质也就是类,关键点在super()
是引用的哪个类?
2.super()
与直接引用父类的区别在于:当父类是唯一的并且只有1层的时候,是相同的,但是如果父类有2层以上并且不是一一对应的情况,
用super()
比较合适,并且不会因为调用子类的时候,不会重复调用父类中的父类
3.如下举例:
1 | class Root(object): |
在输入 D()函数以后,调用 B(),C(),其中 B()调用 super(),按照 python中含义,super()调用的并不是指他的父函数,即 Root(),
而是在 D()的 mro顺序中,调用 B()的 index+1,即 C(),然后调用 Root(), 用 super()形成的子类D(),调用的优势在于,在调用 B(),
C()以后不会重复调用 B(),C()中的super()类,在多层继承的类中,可以防止基类的重复调用.
重点
1. spuer()不是单指父函数,主要作用是在多层继承中
2. super()函数本质是需要理解class的mro
参考文章:
super-considered-super