La función super en Python
Este tutorial explicará el propósito y el uso de la función incorporada super()
en Python. Uno de los conceptos centrales de la programación orientada a objetos (OOP) es la herencia, en la que una clase (subclase) puede acceder a las propiedades y métodos de la clase principal o superclase.
En múltiples herencias, una clase puede heredar propiedades y métodos de múltiples clases, lo que significa que la clase tendrá múltiples superclases. La función super()
es útil y se utiliza principalmente en caso de herencias múltiples, los detalles y el uso de la función super()
con ejemplos de código se discutirán en este tutorial.
Utilice la función incorporada super()
en Python
La función super()
accede a los métodos heredados anulados en una clase. La función super()
se usa en la clase hija con herencia múltiple para acceder a la función de la siguiente clase padre o superclase. La función super()
determina la siguiente clase principal utilizando el Orden de resolución del método (MRO). Como si el MRO es C -> D -> B -> A -> object
, para D
, la función super()
buscará la siguiente clase padre o método de superclase en la secuencia D -> B -> A -> object
.
Si la clase es una sola clase de herencia, en ese caso, la función super()
es útil para usar los métodos de las clases padre sin usar su nombre explícitamente.
La función super(type)
devuelve un objeto proxy que llama a los métodos de la clase padre o hermana del type
de entrada. La sintaxis de super()
es diferente en Python 2 y 3, podemos usar la función super()
en Python 2 para llamar al método heredado mymethod()
como super(type, self).mymethod(args)
y en Python 3 como super().mymethod(args)
.
Ahora, echemos un vistazo a los códigos de ejemplo detallados del uso de la función super()
para llamar a los métodos heredados de la clase secundaria en Python.
Código de ejemplo:
class mysuper_class(object):
def super_method(self):
print("Method of the super class was called!")
class myclass(mysuper_class):
def mymethod(self):
super().super_method()
a = myclass()
a.mymethod()
Producción :
Method of the super class was called