首页 > 代码库 > python super()使用详解

python super()使用详解

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

#coding:utf-8#单继承class A(object):    def __init__(self):        self.n=2    def add(self,m):        self.n+=mclass B(A):    def __init__(self):        self.n=3    def add(self,m):        super(B,self).add(m)        self.n+=3b=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+=mclass B(A):    def __init__(self):        self.n=3    def add(self,m):        print "B"        super(B,self).add(m)        self.n+=3class C(A):    def __init__(self):        self.n=4    def add(self,m):        print "C"        super(C,self).add(m)        self.n+=4class D(B,C):    def __init__(self):        self.n=5    def add(self,m):        print "D"        super(D,self).add(m)        self.n+=5print 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()使用详解