python super()使用详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python super()使用详解相关的知识,希望对你有一定的参考价值。

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()使用详解的主要内容,如果未能解决你的问题,请参考以下文章

Python中verbaim标签使用详解

Python面向对象中的super详解

Python中super详解

Python中super()详解及应用场景举例

Python3中的super()函数详解

二十四Python中super()详解及应用场景举例