Python中的super函数如何实现继承?

本篇文章给大家带来的内容是关于python 中的super函数如何实现继承?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

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

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

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

立即学习“Python免费学习笔记(深入)”;

通过第二个参数传进去的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

登录后复制

以上就是Python中的super函数如何实现继承?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2533787.html

(0)
上一篇 2025年3月5日 21:21:38
下一篇 2025年3月1日 15:35:20

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎么找到黑客的联系方式?

    如果你想要找到黑客的联系方式,那么你可能面临以下难题:黑客往往会隐藏他们的身份,并且他们的联系方式很难被发现。php小编草莓在这里为你提供了一份指南,旨在帮助你找到黑客的联系方式。在本指南中,我们将介绍一些常见的黑客使用的联系方式,并提供一…

    2025年3月5日
    200
  • bool函数怎么用?

    python  bool()用来判断对象是否为true,返回值为true或者false。 bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。 bool 是 int 的子类。 bool()语法: class bo…

    2025年3月5日
    200
  • python2.7和3.5有什么区别

    python2.7和3.5的区别有:1、除法得出的结果不同,python2.7会直接取整,而3.5不取整;2、python3.5中不支持tab与空格混合缩进的情况,python2.7支持;3、两者的库之间存在差异。 今天将要为大家分享的是p…

    2025年3月5日
    200
  • Python3中nonlocal和global的用法及区别介绍(附示例)

    本篇文章给大家带来的内容是关于python3中nonlocal和global的用法及区别介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 关键字nonlocal 在Python 2.x中,闭包只能读外部函数的变…

    编程技术 2025年3月5日
    200
  • python中*的用法介绍(代码示例)

    本篇文章给大家带来的内容是关于python中*的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1. 表示乘法运算 2. 表示倍数 def T(msg,time=1):    print((msg+’ …

    编程技术 2025年3月5日
    200
  • Python继承的代码示例

    本篇文章给大家带来的内容是关于python继承的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 #单继承class Person(object):    def __init__(self,name,age,hei…

    编程技术 2025年3月5日
    200
  • Python实现发短信的方法介绍(附代码)

    本篇文章给大家带来的内容是关于Python发短信的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 #首先注册互亿无线,然后复制发短信界面右上角的apiid和apikey更换代码中的account和pass…

    编程技术 2025年3月5日
    200
  • Python基础流程控制的介绍(代码示例)

         本篇文章给大家带来的内容是关于Python基础流程控制的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 条件语句 if 条件:内容else:内容 登录后复制 缩进必须相同不然会报错 #!/usr/…

    编程技术 2025年3月5日
    200
  • python中pandas和xlsxwriter读写xlsx文件的方法介绍(附代码)

    本篇文章给大家带来的内容是关于python中pandas和xlsxwriter读写xlsx文件的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 已有xlsx文件如下: 1. 读取前n行所有数据 # cod…

    2025年3月5日
    200
  • python有序列表以及方法的介绍(代码)

    本篇文章给大家带来的内容是关于python有序列表以及方法的介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 有序列表以及有序列表的函数和方法(list) list = [‘hello’, ‘wrold’]# l…

    编程技术 2025年3月5日
    200

发表回复

登录后才能评论