La función Python super() devuelve objetos representados en la clase principal y permite múltiples herencias.
Sintaxis de super() en Python
súper()
Return : Devuelve un objeto proxy que está representado en la clase de los padres.
Nota: no hay parámetros en super()
Ejemplo de función super() en Python
Python3
class Emp(): def __init__(self, id, name, Add): self.id = id self.name = name self.Add = Add # Class freelancer inherits EMP class Freelance(Emp): def __init__(self, id, name, Add, Emails): super().__init__(id, name, Add) self.Emails = Emails Emp_1 = Freelance(103, "Suraj kr gupta", "Noida" , "KKK@gmails") print('The ID is:', Emp_1.id) print('The Name is:', Emp_1.name) print('The Address is:', Emp_1.Add) print('The Emails is:', Emp_1.Emails)
Producción:
The ID is: 103 The Name is: Suraj kr gupta The Address is: Noida The Emails is: KKK@gmails
Entendiendo Python super() con métodos __init__()
Python tiene un método reservado llamado «__init__». En el lenguaje orientado a objetos, se le conoce como constructor. Cuando se llama a este método, permite que la clase inicialice los atributos de la clase. En una subclase heredada, se puede hacer referencia a una clase principal con el uso de la función super(). La superfunción devuelve un objeto temporal de la superclase que permite el acceso a todos sus métodos a su clase secundaria.
Nota: Para obtener más información, consulte Herencia en Python
Los beneficios de usar una superclase son:
- No es necesario recordar ni especificar el nombre de la clase principal para acceder a sus métodos. Esta función se puede utilizar tanto en herencias simples como múltiples.
- Esto implementa la modularidad (aislamiento de cambios) y la reutilización del código, ya que no es necesario volver a escribir la función completa.
- La super función en Python se llama dinámicamente porque Python es un lenguaje dinámico, a diferencia de otros lenguajes.
Hay 3 restricciones para usar la superfunción: –
- La clase y sus métodos a los que hace referencia la superfunción.
- Los argumentos de la superfunción y la función llamada deben coincidir.
- Cada aparición del método debe incluir super() después de usarlo.
Super función en herencia simple
Tomemos el ejemplo de los animales. Perros, gatos y vacas son parte de los animales. También comparten características comunes como:
- son mamiferos
- Tienen cola y cuatro patas.
- Son animales domésticos.
Entonces, las clases perros, gatos y caballos son una subclase de la clase animal. Este es un ejemplo de herencia simple porque muchas subclases se heredan de una sola clase principal.
Python3
# Python program to demonstrate # super function class Animals: # Initializing constructor def __init__(self): self.legs = 4 self.domestic = True self.tail = True self.mammals = True def isMammal(self): if self.mammals: print("It is a mammal.") def isDomestic(self): if self.domestic: print("It is a domestic animal.") class Dogs(Animals): def __init__(self): super().__init__() def isMammal(self): super().isMammal() class Horses(Animals): def __init__(self): super().__init__() def hasTailandLegs(self): if self.tail and self.legs == 4: print("Has legs and tail") # Driver code Tom = Dogs() Tom.isMammal() Bruno = Horses() Bruno.hasTailandLegs()
Producción:
It is a mammal. Has legs and tail
Super función en herencias múltiples
Tomemos otro ejemplo de una superfunción . Supongamos que una clase canfly y canswim heredan de una clase de mamíferos y estas clases son heredadas por la clase de animales. Entonces, la clase animal hereda de las múltiples clases base. Veamos el uso de Python super con argumentos en este caso
Python3
class Mammal(): def __init__(self, name): print(name, "Is a mammal") class canFly(Mammal): def __init__(self, canFly_name): print(canFly_name, "cannot fly") # Calling Parent class # Constructor super().__init__(canFly_name) class canSwim(Mammal): def __init__(self, canSwim_name): print(canSwim_name, "cannot swim") super().__init__(canSwim_name) class Animal(canFly, canSwim): def __init__(self, name): # Calling the constructor # of both the parent # class in the order of # their inheritance super().__init__(name) # Driver Code Carol = Animal("Dog")
Producción:
La clase Animal hereda de las clases de dos padres: canFly y canSwim. Entonces, la instancia de la subclase Carol puede acceder a ambos constructores de la clase padre.
Dog cannot fly Dog cannot swim Dog Is a mammal
herencia multinivel
Tomemos otro ejemplo de una superfunción. Supongamos que canFly hereda una clase canSwim y canFly de una clase de mamífero, y estas clases son heredadas por la clase animal. Entonces, la clase animal hereda de la herencia de niveles múltiples. Veamos el uso de Python super con argumentos en este caso
Python3
class Mammal(): def __init__(self, name): print(name, "Is a mammal") class canFly(Mammal): def __init__(self, canFly_name): print(canFly_name, "cannot fly") # Calling Parent class # Constructor super().__init__(canFly_name) class canSwim(canFly): def __init__(self, canSwim_name): print(canSwim_name, "cannot swim") super().__init__(canSwim_name) class Animal(canSwim): def __init__(self, name): # Calling the constructor # of both the parent # class in the order of # their inheritance super().__init__(name) # Driver Code Carol = Animal("Dog")
Producción:
Dog cannot swim Dog cannot fly Dog Is a mammal
Publicación traducida automáticamente
Artículo escrito por sathiyajith19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA