实例讲解html5制作一个网站,软件编程代码大全,单位邮箱怎么查询,dw网页制作教程动态本篇文章给大家带来的内容是关于Python 中的super函数如何实现继承?有一定的参考价值#xff0c;有需要的朋友可以参考一下#xff0c;希望对你有所帮助。Py 2.x 和 Py 3.x 中有一个很大的区别就是类#xff0c;无论是类的定义还是类的继承。Py 3.x 中类的继承可以直接使用…本篇文章给大家带来的内容是关于Python 中的super函数如何实现继承?有一定的参考价值有需要的朋友可以参考一下希望对你有所帮助。Py 2.x 和 Py 3.x 中有一个很大的区别就是类无论是类的定义还是类的继承。Py 3.x 中类的继承可以直接使用 super() 关键字代替原来的 super(Class, self)。那么 super() 到底是依据什么来继承的呢今天就来分析下。super()函数根据传进去的两个参数具体作用如下通过第一参数传进去的类名确定当前在MRO中的哪个位置。MRO(Method Resolution Order)通过第二个参数传进去的self确定当前的MRO列表。def super(cls, inst):mro inst.__class__.mro() #确定当前MRO列表return mro[mro.index(cls) 1] #返回下一个类如下代码class A(object):def name(self):print(name is xiaoming)#super(A,self).name()class B(object):def name(self):print(name is cat)class C(A,B):def name(self):print(name is wang)super(C,self).name()if __name__ __main__:c C()print(c.__class__.__mro__)c.name()执行以上代码输出当执行C类下的super()函数时实际调用了A类下的name函数。A中注释掉了super()函数所以并没有向后继续执行。并且打印出了当前MRO列表顺序为C,A,B,object.(, , , )name is wangname is xiaoming当我们把A类中的注释去掉后执行代码输出可以看到当A执行后继续执行了B中的name()函数。如果B中仍然有super函数则会继续向上去查找object中是否有name()函数。(, , , )name is wangname is xiaomingname is cat