子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好。其实呢,还有更好的理由不去直接引用父类的名字,
这时候就该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在单html" target="_blank">继承中使用的例子:
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中的hypot()方法使用简介,包括了Python中的hypot()方法使用简介的使用技巧和注意事项,需要的朋友参考一下 hypot()方法返回的欧几里德范数 sqrt(x*x + y*y). 语法 以下是hypot()方法的语法: 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数 参数 x -- 这必须是一
本文向大家介绍Python中encode()方法的使用简介,包括了Python中encode()方法的使用简介的使用技巧和注意事项,需要的朋友参考一下 encode() 方法返回字符串的编码版本。默认编码是当前的默认字符串编码。可给予设置不同的错误处理机制。 语法 以下是encode()方法的语法: 参数 encoding -- 这是所使用的编码。对于所有的编码方案的列表,请访问:标准编
本文向大家介绍python super函数使用方法详解,包括了python super函数使用方法详解的使用技巧和注意事项,需要的朋友参考一下 一、super函数简介 python内置函数super()主要用于类的多继承中,用来查找并调用父类的方法,所以在单重继承中用不用 super 都没关系;但是,使用 super() 是一个好的习惯。一般我们在子类中需要调用父类的方法时才会这么用; 二、sup
本文向大家介绍Python中的super用法详解,包括了Python中的super用法详解的使用技巧和注意事项,需要的朋友参考一下 一、问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: 即,使用非绑定的类方法(用类名来引用的方法),并在参数列表中,引入待绑定的对象(self),从而达到调用父类的目的。
问题内容: 我想知道何时使用什么风格的Python 3 super()。 到目前为止,我仅使用了没有参数的方法,并且按预期方式工作(由Java开发人员使用)。 问题: 在这种情况下,“约束”是什么意思? 绑定和未绑定的超级对象有什么区别? 什么时候使用,什么时候使用? 像这样命名超级类会更好吗? 问题答案: 让我们使用以下类进行演示: 未绑定对象不会将属性访问分配给类,您必须使用描述符协议: 绑定
rank ▲ ✰ vote url 19 710 261 493 url 理解Python中super()和__init__()方法 我试着理解super()方法.从表面上看,两个子类实现的功能都一样.我想问它们俩的区别在哪里? class Base(object): def __init__(self): print "Base created" class Child