美文网首页Python小哥哥
5分钟了解 Python 中的super函数是如何实现继承的

5分钟了解 Python 中的super函数是如何实现继承的

作者: 我爱学python | 来源:发表于2019-03-24 16:02 被阅读0次

Py 2.x 和 Py 3.x 中有一个很大的区别就是类,无论是类的定义还是类的继承。Py 3.x 中类的继承可以直接使用 super() 关键字代替原来的 super(Class, self)。

那么 super() 到底是依据什么来继承的呢?今天就来分析下。

super()函数根据传进去的两个参数具体作用如下:

通过第一参数传进去的类名确定当前在MRO中的哪个位置。MRO(Method Resolution Order);

通过第二个参数传进去的self,确定当前的MRO列表。

如下代码:

执行以上代码输出:当执行C类下的super()函数时,实际调用了A类下的name函数。A中注释掉了super()函数,所以并没有向后继续执行。并且打印出了当前MRO列表顺序为C,A,B,object.

(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)name is wangname is xiaoming

当我们把A类中的注释去掉后,执行代码输出:可以看到,当A执行后继续执行了B中的name()函数。如果B中仍然有super函数则会继续向上去查找object中是否有name()函数。

(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)name is wangname is xiaomingname is cat

相关文章

  • 怎么理解Python类中的super函数

    前言 在Python类的继承中,经常能看到super函数的存在,那super函数主要的作用,以及如何理解和使用好这...

  • 5分钟了解 Python 中的super函数是如何实现继承的

    Py 2.x 和 Py 3.x 中有一个很大的区别就是类,无论是类的定义还是类的继承。Py 3.x 中类的继承可以...

  • python 神奇的super()

    我们都知道在python继承中,子类调用父类的方法是使用super()函数,在2.X里格式是super(mycla...

  • Python进阶-继承中的MRO与super

    Python进阶-继承中的MRO与super @(Python)[python, python进阶] [TOC] ...

  • python必知必会5

    Python 的 super 方法有什么用? 面向对象编程的主要优点之一是重用。继承是实现继承的机制之一。 在继承...

  • typescript中的类

    ts中如何定义类 ts中实现继承 extends super 继承 父类和子类有同样的方法的话,首先在子类里找,找...

  • 了解类的继承和super函数

    今天来了解下类的继承和super函数,为之后我们阅读他人代码做铺垫。 我们首先来看一个列子: 以下是打印结果: 从...

  • python oop相关

    dir del 继承父类的init以及super 未实现方法警告 继承覆盖父类函数(重写) slots 内置属性优...

  • python中的super() 函数

    super() 函数是用于调用父类(超类)的一个方法。 super 是用来解决多重继承问题的,直接用类名调用父类方...

  • Python的继承

    #Python继承的特点 总是从某个类继承 不要忘记调用 super().init 一定要用 super(Teac...

网友评论

    本文标题:5分钟了解 Python 中的super函数是如何实现继承的

    本文链接:https://www.haomeiwen.com/subject/tjpuvqtx.html