1.super的作用
调用父类方法
2.单继承使用示例

#coding:utf-8
#单继承
class A(object):
def __init__(self):
self.n=2
def add(self,m):
self.n+=m
class B(A):
def __init__(self):
self.n=3
def add(self,m):
super(B,self).add(m)
self.n+=3
b=B()
b.add(3)
print b.n

运行结果:

super(B,self)参数说明:
1)B:调用的是B的父类的方法。
2)self:子类的实例
3.多继承使用示例

#多继承
class A(object):
def __init__(self):
self.n=2
def add(self,m):
print "A"
self.n+=m
class B(A):
def __init__(self):
self.n=3
def add(self,m):
print "B"
super(B,self).add(m)
self.n+=3
class C(A):
def __init__(self):
self.n=4
def add(self,m):
print "C"
super(C,self).add(m)
self.n+=4
class D(B,C):
def __init__(self):
self.n=5
def add(self,m):
print "D"
super(D,self).add(m)
self.n+=5
print D.__mro__
d=D()
d.add(3)
print d.n

运行结果:

python中__mro__属性,表示类的线性解析顺序, 新式类使用广度优先搜索,来确定父类调用顺序。
如上例中,D类__mro__的值为[D,B,C,A,object],因此,super(D,self).add(m)会先调用B的add方法,
super(B,self).add(m)会先调用C的add方法,super(C,self).add(m)会先调用A的add方法,结果为20

python super()使用详解的更多相关文章

  1. Python super继承详解

    MRO(Method resolution order)是python用来解析方法调用顺序的,mro中记录了一个类的所有基类的类类型序列,super不是简单地调用基类的方法,而是按照MRO中的顺序来调 ...

  2. python super()函数详解

    引言: 在类的多继承使用场景中,重写父类的方法时,可能会考虑到需要重新调用父类的方法,所以super()函数就是比较使用也很必要的解决方法: 文章来源: http://www.cnblogs.com/ ...

  3. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  4. Python基础知识详解 从入门到精通(七)类与对象

    本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...

  5. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息.        ...

  6. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明  一.简介 ...

  7. Python中dict详解

    from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...

  8. Python开发技术详解(视频+源码+文档)

    Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...

  9. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

随机推荐

  1. Linux一些基本命令一(学习笔记三)

    菜鸟记录. 一.更改主机名 hostname 新的主机名 hostname ln0491 将主机名更改为ln0491 登出再登陆,就变为新的主机名 二.新建文件夹和删除 如:在当前路径新建data文件 ...

  2. 美国程序猿(软件project师)平均年薪状况调查

    来源站点:Indeed.com&computerengineeringsalarydata.com Average Software Engineer Salary by 50 States ...

  3. mac 安装升级python3

    如果没有安装过python3的话那就直接下载dmg文件安装升级,一般下载安装后的路径为 /Library/Frameworks/Python.framework/Versions 如果同时安装了多个p ...

  4. 分析Java Thread State

    使用 TDA 工具,看到大量 Java Thread State 的第一反应是: 1,线程状态为“waiting for monitor entry”: 意味着它 在等待进入一个临界区 ,所以它在”E ...

  5. spring boot 环境搭建

    1.开发工具 https://spring.io/tools/sts/all 2.demo https://start.spring.io 3.下载maven https://maven.apache ...

  6. eclipse 显示特殊符号

    windows --> Preferences --> General --> Editors --> Text Editors 右边 show white space let ...

  7. [Unity-1] Unity简单介绍

    Unity是一套包含图形.声音.物理等功能的游戏引擎,提供了一个强大的关卡编辑器.支持大部分主流3D软件格式,使用C#或者JavaScript等高级语言实现脚本功能.使开发人员无需了解底层复杂技术,高 ...

  8. 【docker】挂载web应用

    现在将webapps目录挂载在宿主机目录,方便运维 docker run -p 8090:8080 --name app -v /usr/app:/usr/local/tomcat/webapps d ...

  9. python之函数用法__str__()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法__str__() #http://www.cnblogs.com/hongfei/p ...

  10. 配置的好的Apache和PHP语言的环境下,如何在Apache目录下htdocs/html目录下 同时部署两个项目呢

    建虚拟目录打开Apache->conf->httpd.conf在最下面粘贴NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> S ...