Python中的super()方法使用简介
子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好。其实呢,还有更好的理由不去直接引用父类的名字,
这时候就该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使用super()出现错误解决办法
python使用super()出现错误解决办法 当我们在python的子类中调用父类的方法时,会用到super(),不过我遇到了一个问题,顺便记录一下. 比如,我写了如下错误代码: class A(): def dosomething(self): print "It's A" class B(A): def dosomething(self): super(B, self).dosomething() if __name__ == '__main__': b = B() b.doso
-
python类中super()和__init__()的区别
单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class childB(Base): def __init__(self): print 'creat B ', super(childB, self).__
-
Python3里的super()和__class__使用介绍
子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好.其实呢,还有更好的理由不去直接引用父类的名字,参见 Python's super() considered super! | Deep Thoughts by Raymond Hettinger. 这时候就该 super() 登场啦-- 复制代码 代码如下: class A: def m(self): print('A') class B(A): def m(self)
-
Python中super()函数简介及用法分享
首先看一下super()函数的定义: super([type [,object-or-type]]) Return a **proxy object** that delegates method calls to a **parent or sibling** class of type. 返回一个代理对象, 这个对象负责将方法调用分配给第一个参数的一个父类或者同辈的类去完成. parent or sibling class 如何确定? 第一个参数的__mro__属性决定了搜索的顺序, sup
-
Python中的super()方法使用简介
子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好.其实呢,还有更好的理由不去直接引用父类的名字, 这时候就该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): p
-
深入理解Python中的super()方法
前言 python的类分别有新式类和经典类,都支持多继承.在类的继承中,如果你想要重写父类的方法而不是覆盖的父类方法,这个时候我们可以使用super()方法来实现 python语言与C++有相似的类继承,在类定义时,python中会自定义第一个self,类似C++中this指针,指向对象自身. python简单的类举例: >>> class hello(object): ... def print_c(): ... print"hello world!" >&g
-
Python中的hypot()方法使用简介
hypot()方法返回的欧几里德范数 sqrt(x*x + y*y). 语法 以下是hypot()方法的语法: hypot(x, y) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数 参数 x -- 这必须是一个数值 y -- 此方法返回欧几里德范数 sqrt(x*x + y*y) 返回值 此方法返回欧几里德范数 sqrt(x*x + y*y) 例子 下面的例子显示 hypot()方法的使用. #!/usr/bin/python impor
-
Python中的lstrip()方法使用简介
lstrip()方法返回所有字符被去除开头字符串(缺省为空格字符)的一个复本. 语法 以下是lstrip()方法的语法: str.lstrip([chars]) 参数 chars -- 您提供要剪裁的字符. 返回值 此方法返回所有字符都被去除字符串开头(缺省为空格字符)的字符串的一个复本. 例子 下面的例子显示了lstrip()方法的使用. #!/usr/bin/python str = " this is string example....wow!!! "; print str.l
-
python中pylint使用方法(pylint代码检查)
一.Pylint 是什么 Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等. Pylint 的一个很大的好处是它的高可配置性,高可定制性,并且可以很容易写小插件来添加功能. 如果运行两次 Pylint,它会同时显示出当前和上次的运行结果,从而可
-
Python中摘要算法MD5,SHA1简介及应用实例代码
关于算法的学习,小编觉得编程语言中的算法大都有一些相通的地方,主要的方面一是了解这一算法能用来干什么,另一方面,学习它在这类编程语言中怎么实现. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示).摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过(不同的data计算出来的摘要不同). 常见的摘要算法有MD5和SHA1 MD5 import hashli
-
Python中的super()面向对象编程
目录 Python super()面向对象编程 一.为什么要用 super() 二.什么是 super 三.继承中使用 super 1.实例方法使用 super 2.构造方法使用 super 四.多继承中使用 super Python super()面向对象编程 一.为什么要用 super() 当子类重写了父类方法时,又想调用父类的同名方法时,就需要用到 super() 二.什么是 super 在 Python 中,super 是一个特殊的类 super() 就是使用 super 类创建出来的对
-
python 中的 super详解
目录 super 的完整形式 super 的使用 提到 super,最直接的想法就是它代表了父类,替父类执行某些方法.但是理解也仅止步于此,下面对 super 做进一步理解 super 的完整形式 常见的 super 用法如下 class Person(): def __init__(self,name): self.name = name print('Person') class Male(Person): def __init__(self,age): super().__init__('
-
Python中pygame安装方法图文详解
本文实例讲述了Python中pygame安装方法.分享给大家供大家参考,具体如下: 这里主要描述一下我们怎样来安装pygame 可能很多人像我一样,发现了pygame是个好东东,但是就是不知道怎样使用,或者怎样安装,在百度/google上面搜索了一番后,发现没有一篇 详细描述pygame的安装过程的文章.如果你是其中的一员,那么这篇教程可能会帮助到你. 当然,在学习pygame的时候,需要你要有一定的python基础知识的.如果你已经具备了一定的python基础,那么接下来的内容可能对你来说就很
-
python中私有函数调用方法解密
本文实例讲述了python中私有函数调用方法.分享给大家供大家参考,具体如下: 与大多数语言一样,Python 也有私有的概念: ① 私有函数不可以从它们的模块外面被调用 ② 私有类方法不能够从它们的类外面被调用 ③ 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字. 如果一个 Python 函数,类方法,或属性的名字以两个下划线开始(但不是结束),它是私有的:其它所有的都是公有的. Python 没有类方法 保护
随机推荐
- Python中__name__的使用实例
- Java 使用IO流实现大文件的分割与合并实例详解
- functional继承模式 摘自javascript:the good parts
- 基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
- php中使用临时表查询数据的一个例子
- php的数组与字符串的转换函数整理汇总
- python中元类用法实例
- Struts1之url截取_动力节点Java学院整理
- 详解nodejs微信公众号开发——4.自动回复各种消息
- sql server 2005数据库备份还原图文教程
- JavaScript hasOwnProperty() 函数实例详解
- C#简单输出日历的方法
- c语言中 基于随机函数的使用详解
- Python中的Function定义方法第1/2页
- Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
- 详解C++中的成员访问运算符和指针到成员运算符
- mingw编译的windows命令行贪吃蛇示例
- python 查找文件名包含指定字符串的方法
- 如何通过java实现highcharts导出图片至excel
- 通过String.intern()方法浅谈堆中常量池