Python super() 函数简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guyan1101/article/details/80585268
描述
super() 函数是用于调用父类(超类)的一个方法。

super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。

MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

语法

以下是 super() 方法的语法:

super ( type [, object - or - type ])

参数
  • type -- 类。
  • object-or-type -- 类,一般是 self
Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx :

Python3.x 实例:

class A : passclass B ( A ): def add ( self , x ): super (). add ( x )

Python2.x 实例:

class A ( object ): # Python2.x 记得继承 object passclass B ( A ): def add ( self , x ): super ( B , self ). add ( x )

返回值

无。

实例

以下展示了使用 super 函数的实例:

#!/usr/bin/python# -*- coding: UTF-8 -*-
class FooParent ( object ) :
def __init__ ( self ) :
    self . parent = ' I \' m the parent. '
    print ( ' Parent ' )
d ef bar ( self , message ) :
    print ( " %s from Parent " % message )
class FooChild ( FooParent ) :
    def __init__ ( self ) : # super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类B的对象 FooChild 转换为类 FooParent 的对象
        super ( FooChild , self ) . __init__ ()
        print ( ' Child ' )
        def bar ( self , message ) :
            super ( FooChild , self ) . bar ( message )
            print ( ' Child bar fuction ' )
            print ( self . parent )
            i f __name__ == ' __main__ ' :
                fooChild = FooChild () fooChild . bar ( ' HelloWorld ' )

执行结果:

Parent
Child
Hello World from Parent
Child bar fuction
I 'm the parent

猜你喜欢

转载自blog.csdn.net/guyan1101/article/details/80585268