Python中的super()方法使用简介


Posted in Python onAugust 14, 2015

子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好。其实呢,还有更好的理由不去直接引用父类的名字,
这时候就该super()登场啦——

class A:
 def m(self):
  print('A')

class B(A):
 def m(self):
  print('B')
  super().m()

B().m()

当然 Python 2 里super() 是一定要参数的,所以得这么写:

class B(A):
 def m(self):
  print('B')
  super(B, self).m()

    super在单继承中使用的例子:

class Foo():
  def __init__(self, frob, frotz)
    self.frobnicate = frob
    self.frotz = frotz

class Bar(Foo):
  def __init__(self, frob, frizzle)
    super().__init__(frob, 34)
    self.frazzle = frizzle

此例子适合python 3.x,如果要在python2.x下使用则需要稍作调整,如下代码示例:

class Foo(object): 
  def __init__(self, frob, frotz): 
    self.frobnicate = frob 
    self.frotz = frotz 

class Bar(Foo): 
  def __init__(self, frob, frizzle): 
    super(Bar,self).__init__(frob,34) 
    self.frazzle = frizzle 

new = Bar("hello","world") 
print new.frobnicate 
print new.frazzle 
print new.frotz

需要提到自己的名字。这个名字也是动态查找的,在这种情况下替换第三方库中的类会出问题。

`super()`` 很好地解决了访问父类中的方法的问题。

Python 相关文章推荐
pygame学习笔记(4):声音控制
Apr 15 Python
Python2.x与Python3.x的区别
Jan 14 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
Python列表生成式与生成器操作示例
Aug 01 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 Python
在Python中使用正则表达式的方法
Aug 13 #Python
简单讲解Python中的闭包
Aug 11 #Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 #Python
python实现web方式logview的方法
Aug 10 #Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 #Python
python用10行代码实现对黄色图片的检测功能
Aug 10 #Python
详解Python中dict与set的使用
Aug 10 #Python
You might like
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
php格式化日期实例分析
2014/11/12 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
python实现复制大量文件功能
2019/08/31 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
LINUX下线程,GDI类的解释
2016/12/14 面试题
一道输出判断型Java面试题
2014/10/01 面试题
业务部经理岗位职责
2014/01/04 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
师德师风演讲稿
2014/05/05 职场文书
地心历险记观后感
2015/06/15 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
关于JavaScript轮播图的实现
2021/11/20 Javascript
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技