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 相关文章推荐
在Python中进行自动化单元测试的教程
Apr 15 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python程序中设置HTTP代理
Nov 06 Python
python合并同类型excel表格的方法
Apr 01 Python
python3.5绘制随机漫步图
Aug 27 Python
Python编写带选项的命令行程序方法
Aug 13 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
Jupyter安装链接aconda实现过程图解
Nov 02 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
PHP整合PayPal支付
2015/06/11 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
python利用beautifulSoup实现爬虫
2014/09/29 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
Python上下文管理器和with块详解
2017/09/09 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
Python错误处理操作示例
2018/07/18 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
JDO的含义
2012/11/17 面试题
专题组织生活会方案
2014/06/15 职场文书
禁止酒驾标语
2014/06/25 职场文书
农村文化建设标语
2014/10/07 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
运动员代表致辞
2015/07/29 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
话题作文之成长
2019/12/09 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL