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中常用的各种数据库操作模块和连接实例
May 29 Python
Python使用shelve模块实现简单数据存储的方法
May 20 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
Python网络编程之使用TCP方式传输文件操作示例
Nov 01 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
python 日志 logging模块详细解析
Mar 31 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 Python
详解Python函数print用法
Jun 18 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 checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
不懂JavaScript应该怎样学
2008/04/16 Javascript
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
Python 创建子进程模块subprocess详解
2015/04/08 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
应届大学生自荐信
2013/12/05 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
老师的检讨书
2014/02/23 职场文书
演讲开场白台词大全
2015/05/29 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
pandas 实现将NaN转换为None
2021/05/14 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
vscode内网访问服务器的方法
2022/06/28 Servers