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中使用hashlib模块处理算法的教程
Apr 28 Python
深入源码解析Python中的对象与类型
Dec 11 Python
Python中random模块生成随机数详解
Mar 10 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
pandas表连接 索引上的合并方法
Jun 08 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
Python读取表格类型文件代码实例
Feb 17 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
python-地图可视化组件folium的操作
Dec 14 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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代码收集表单内容并写入文件的代码
2012/01/29 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
js数组的操作详解
2013/03/27 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
儿童编程python入门
2018/05/08 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
详解Python循环作用域与闭包
2019/03/21 Python
Python3内置模块random随机方法小结
2019/07/13 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
违章停车检讨书
2014/10/21 职场文书
学校师德师风整改方案
2014/10/28 职场文书
论文答辩开场白大全
2015/05/27 职场文书
工作自我评价范文
2019/03/21 职场文书
python之基数排序的实现
2021/07/26 Python
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL