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 相关文章推荐
200 行python 代码实现 2048 游戏
Jan 12 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
python儿童学游戏编程知识点总结
Jun 03 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
基于python修改srt字幕的时间轴
Feb 03 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
python 实现汉诺塔游戏
Nov 28 Python
手把手教你用Django执行原生SQL的方法
Feb 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
python设置环境变量的作用整理
2020/02/17 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
pytorch简介
2020/11/11 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
办公室主任先进事迹
2014/01/18 职场文书
房产买卖委托公证书
2014/04/04 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
公司仓库管理制度
2015/08/04 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers