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 16 Python
浅析PHP与Python进行数据交互
May 15 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
Python爬虫定时计划任务的几种常见方法(推荐)
Jan 15 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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/04/13 PHP
php生成excel列序号代码实例
2013/12/24 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
js读取cookie方法总结
2014/10/31 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python实现栈的方法
2015/05/26 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python如何实现反向迭代
2018/03/20 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
入党积极分子思想汇报
2014/01/02 职场文书
安全技术说明书
2014/05/09 职场文书
公务员检讨书
2014/11/01 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers