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 冒泡,选择,插入排序使用实例
Feb 05 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
Java分治归并排序算法实例详解
Dec 12 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
python - timeit 时间模块
Apr 06 Python
用Python创建简易网站图文教程
Jun 11 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多用户计数器代码
2007/03/11 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
win与linux系统中python requests 安装
2016/12/04 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
电气工程和自动化自荐信范文
2013/12/25 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
门店业绩提升方案
2014/06/08 职场文书
2015大学生求职信范文
2015/03/20 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书
超市主管竞聘书
2015/09/15 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书