Python Función super()

Python 内置函数Funciones incorporadas de Python


Descripción

super()La función se utiliza para llamar a un método de la clase padre (superclase).

super()Se utiliza para resolver problemas de herencia múltiple. Llamar directamente al método de la clase padre usando el nombre de la clase no es un problema con herencia única, pero si se usa herencia múltiple, se involucran problemas como el orden de búsqueda (MRO), llamadas repetidas (herencia en diamante), etc.

MRO es la tabla de orden de resolución de métodos de la clase; en realidad, es la tabla de orden al heredar métodos de la clase padre.

Sintaxis

La siguiente es la sintaxis del método super():

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

Parámetros

  • type -- Clase.
  • object-or-type -- Clase, generalmente self

Una diferencia entre Python3.x y Python2.x es: Python 3 puede usar directamentesuper().xxxen lugar desuper(Class, self).xxx :

Ejemplo de Python3.x:

class A: def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super().add(x) b = B() b.add(2) # 3

Ejemplo de Python2.x:

#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): # En Python2.x, recuerda heredar object def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super(B, self).add(x) b = B() b.add(2) # 3

Valor de retorno

Ninguno.


Ejemplo

A continuación se muestra un ejemplo de uso de la función super:

Ejemplo

#!/usr/bin/python # -*- coding: UTF-8 -*- class FooParent(object): def __init__(self): self.parent = 'I\'m the parent.' print ('Parent') def bar(self,message): print ("%s from Parent" % message) class FooChild(FooParent): def __init__(self): # super(FooChild,self) primero encuentra la clase padre de FooChild (es decir, la clase FooParent), y luego convierte el objeto de la clase FooChild en un objeto de la clase FooParent super(FooChild,self).__init__() print ('Child') def bar(self,message): super(FooChild, self).bar(message) print ('Child bar fuction') print (self.parent) if __name__ == '__main__': fooChild = FooChild() fooChild.bar('HelloWorld')

Resultado de la ejecución:

Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.

Python 内置函数Funciones incorporadas de Python

Otras extensiones