super() 函数是用于调用父类(超类)的一个方法。

super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。

MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

语法

以下是 super() 方法的语法:

super(type[, object-or-type])

参数

  • type – 类。
  • object-or-type – 类,一般是 self

Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx :

Python3.x 实例:

class A:pass
class B(A):def add(self, x):super().add(x)
Python2.x 实例:
class A(object):   # Python2.x 记得继承 objectpass
class B(A):def add(self, x):super(B, self).add(x)

返回值
无。

实例
以下展示了使用 super 函数的实例:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#!/usr/bin/python
# -*- coding: UTF-8 -*-class FooParent(object):def __init__(self):self.parent = 'I\'m the parent.'print ('Parent')def bar(self,message):print ("%s from Parent" % message)class FooChild(FooParent):def __init__(self):# super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类B的对象 FooChild 转换为类 FooParent 的对象super(FooChild,self).__init__()    print ('Child')def bar(self,message):super(FooChild, self).bar(message)print ('Child bar fuction')print (self.parent)if __name__ == '__main__':fooChild = FooChild()fooChild.bar('HelloWorld')

执行结果:

Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.

Python super超类方法相关推荐

  1. python super()函数(用来调用父类方法)

    如图,super()用于调用当前类Canvas的父类QWidget的size()方法: 参考文章1:Python super 详解 参考文章2:Python super() 函数

  2. python super()方法的作用_详解python的super()的作用和原理

    Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递.uz0免费资源网 今天我们介绍的主角是s ...

  3. 为什么Python的“私有”方法实际上不是私有的?

    Python使我们能够通过在名称前加上双下划线来在类中创建"私有"方法和变量,如下所示: __myPrivateMethod() . 那么,如何解释这一点呢 >>> ...

  4. 设计一个矩形类rectangle_使用Python super()为您的类增强

    虽然Python不仅仅是一种面向对象的语言,但它足够灵活,功能强大,足以让您使用面向对象的范例构建应用程序.Python实现这一目标的方法之一是支持继承,它与之相关super(). 在本教程中,您将了 ...

  5. python中如何编写代码输入多个数据并把它们放在一个列表中去_这59条编写高质量Python代码的方法你知道吗?...

    这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码的59个有效方法>,感觉还不错,具有很大的指导价值. 下面将以最简单的方式记录这59条建议,并在大部 ...

  6. python super 变参数问题(五)

    这是Python多层继承的一个特例,祖父,父亲,儿子都有 draw 方法,那么经过多次继承后, 如何对于不同层次的方法传递参数呢,可以看这篇文章python super 理解(四) 如何对于不同层次的 ...

  7. python __reduce__魔法方法_Python魔法方法指南

    (译)Python魔法方法指南 简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法" ...

  8. python super()(转载)

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A:def __init__(self ...

  9. python 之 __new__ 方法理解

    python的new方法 使用场景不同效果也不一样 一种是指定元类时候, metaclass=MyType 类型 这种方式 在解释器执行到 metaclass=CrawlerProxyMetaclas ...

最新文章

  1. 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点
  2. 执行RF测试只生成output.xml文件,不生成log和report文件
  3. 用sql统计vintage,滚动率,迁移率,逾期率
  4. 目前成熟的计算机安全技术,计算机安全危害特点研究(共2389字).doc
  5. 突然被工信部重罚!阿里云到底干了啥?
  6. linux修改python默认版本
  7. Flex RIA的ArcIMS WebGIS之路(一)--胸中的那棵竹
  8. java代码继承------多层继承
  9. 一、Java多线程基础
  10. 学李炎恢老师的PHP第一季 笔记 多用户留言系统-TestGuest0.2
  11. Java 买卖股票的最佳时机含手续费leetcode_714
  12. 误删阿里云mysql恢复数据恢复_阿里云数据库表数据误删恢复
  13. Eason's concert
  14. [转载] 百科全说——陈焕然:揭秘高科技美容(10-02-22)
  15. 【全网详解】从0到1搭建双十一实时交易数据展示平台——Spark+Kafka构建实时分析系统
  16. 《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
  17. sa结构组网方式_NSA、SA网络架构,怎样才能分清?
  18. [Python图像处理] 二十九.MoviePy视频编辑库实现抖音短视频剪切合并操作
  19. 正则表达式(详细解析)
  20. java 使用 jacob 实现 将 freemarker 导出的 XML 格式的 excel 转 xls、xlsx 格式

热门文章

  1. maven repository
  2. jqGrid的autoencode参数设置为true在客户端可能引发的编码问题
  3. DIV CSS布局中绝对定位和浮动用法
  4. vi/vim 光标移动命令
  5. Excel中去掉单元格中间的空格
  6. ABAP-在SMARTFORMS中取消使用WORD作为编辑器
  7. SAP CO模块权限控制
  8. 不安装Oracle客户端使用PLSQL
  9. pp模块中关于物料反冲的探讨
  10. 交易性金融资产的账务处理实例