La función super()
Parte de la sección Programación orientada a objetos del Journey de Python de Coddy. Lección 18 de 64.
La función super() permite que una clase hija llame a métodos de su clase padre. Esto te permite ampliar la funcionalidad de la clase padre en lugar de reemplazarla por completo.
Aquí tienes un ejemplo de uso de super() en el constructor:
class Animal:
def __init__(self, name):
self.name = name
print(f"Animal created: {name}")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Llama al __init__ de la clase padre
self.breed = breed
print(f"Dog breed set: {breed}")Crea un objeto perro:
buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")Salida:
Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden RetrieverUsa super() para ampliar los métodos de la clase padre:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Llama primero al método de la clase padre
print("Woof!") # Añade un comportamiento específico del perroLlama al método extendido:
buddy = Dog()
buddy.make_sound()Salida:
Generic animal sound
Woof!Sin super(), perderías la funcionalidad de la clase padre:
class Cat(Animal):
def make_sound(self):
print("Meow!") # Solo el sonido del gato; se ignora el método de la clase padre
cat = Cat()
cat.make_sound()Salida:
Meow!Punto clave: Usa super() para llamar a los métodos de la clase padre desde las clases hijas. Esto te permite ampliar la funcionalidad en lugar de reemplazarla por completo. Entre los usos más comunes se incluyen llamar a los métodos __init__ de la clase padre y ampliar el comportamiento de la clase padre.
Desafío
IntermedioEn este desafío, implementarás una jerarquía de clases Person y Employee mediante herencia.
person.py: Contiene la clase Person con los atributos name y ageemployee.py: Contiene la clase Employee, que hereda de Persondriver.py: Archivo principal para probar tu implementación
Cada archivo contiene comentarios detallados TODO para guiarte en la implementación.
Pruébalo tú mismo
# TODO: Importa la clase Person desde person.py
# TODO: Importa la clase Employee desde employee.py
def main():
# TODO: Crea un objeto Person con el nombre "Alice" y la edad 30
person = None
# TODO: Crea un objeto Employee con el nombre "Bob", la edad 35 y el puesto "Developer"
employee = None
# TODO: Llama al método introduce() del objeto Person
# Salida esperada: "Hi, I'm Alice and I'm 30 years old"
# TODO: Imprime una línea en blanco para separar - print()
# TODO: Llama al método introduce() del objeto Employee
# Salida esperada:
# "Hi, I'm Bob and I'm 35 years old"
# "I work as a Developer"
if __name__ == "__main__":
main()Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación orientada a objetos
1Fundamentos de la POO
Introducción a la POOArchivos externosClases vs. objetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Repaso: calculadora sencilla4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosRepaso: jerarquía de empleados7Métodos especiales
Introducción a los métodos mágicosSobrecarga de operadoresMétodos mágicos de contenedoresRepaso: lista personalizada10Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy2Decoradores
Introducción a los decoradoresDecorador de propiedadDecorador de método estáticoDecorador de método de clase5Polimorfismo
Repaso de la sobrescritura de métodosTipado patoClases y métodos abstractosDiseño de interfacesRepaso: calculadora de formas8Conceptos avanzados de POO
Composición frente a herenciaMixinsMétodos estáticos y de claseDecoradores de claseGestores de contexto11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Propiedades de clase
Variables de instancia vs. variables de claseDecoradores de propiedadesAtributos privadosRepaso: gestor de cuentas bancariasPractica por tu cuenta: Compilador de Python online