Python super超类方法
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超类方法相关推荐
- python super()函数(用来调用父类方法)
如图,super()用于调用当前类Canvas的父类QWidget的size()方法: 参考文章1:Python super 详解 参考文章2:Python super() 函数
- python super()方法的作用_详解python的super()的作用和原理
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递.uz0免费资源网 今天我们介绍的主角是s ...
- 为什么Python的“私有”方法实际上不是私有的?
Python使我们能够通过在名称前加上双下划线来在类中创建"私有"方法和变量,如下所示: __myPrivateMethod() . 那么,如何解释这一点呢 >>> ...
- 设计一个矩形类rectangle_使用Python super()为您的类增强
虽然Python不仅仅是一种面向对象的语言,但它足够灵活,功能强大,足以让您使用面向对象的范例构建应用程序.Python实现这一目标的方法之一是支持继承,它与之相关super(). 在本教程中,您将了 ...
- python中如何编写代码输入多个数据并把它们放在一个列表中去_这59条编写高质量Python代码的方法你知道吗?...
这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码的59个有效方法>,感觉还不错,具有很大的指导价值. 下面将以最简单的方式记录这59条建议,并在大部 ...
- python super 变参数问题(五)
这是Python多层继承的一个特例,祖父,父亲,儿子都有 draw 方法,那么经过多次继承后, 如何对于不同层次的方法传递参数呢,可以看这篇文章python super 理解(四) 如何对于不同层次的 ...
- python __reduce__魔法方法_Python魔法方法指南
(译)Python魔法方法指南 简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法" ...
- python super()(转载)
一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A:def __init__(self ...
- python 之 __new__ 方法理解
python的new方法 使用场景不同效果也不一样 一种是指定元类时候, metaclass=MyType 类型 这种方式 在解释器执行到 metaclass=CrawlerProxyMetaclas ...
最新文章
- 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点
- 执行RF测试只生成output.xml文件,不生成log和report文件
- 用sql统计vintage,滚动率,迁移率,逾期率
- 目前成熟的计算机安全技术,计算机安全危害特点研究(共2389字).doc
- 突然被工信部重罚!阿里云到底干了啥?
- linux修改python默认版本
- Flex RIA的ArcIMS WebGIS之路(一)--胸中的那棵竹
- java代码继承------多层继承
- 一、Java多线程基础
- 学李炎恢老师的PHP第一季 笔记 多用户留言系统-TestGuest0.2
- Java 买卖股票的最佳时机含手续费leetcode_714
- 误删阿里云mysql恢复数据恢复_阿里云数据库表数据误删恢复
- Eason's concert
- [转载] 百科全说——陈焕然:揭秘高科技美容(10-02-22)
- 【全网详解】从0到1搭建双十一实时交易数据展示平台——Spark+Kafka构建实时分析系统
- 《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
- sa结构组网方式_NSA、SA网络架构,怎样才能分清?
- [Python图像处理] 二十九.MoviePy视频编辑库实现抖音短视频剪切合并操作
- 正则表达式(详细解析)
- java 使用 jacob 实现 将 freemarker 导出的 XML 格式的 excel 转 xls、xlsx 格式