Menu
Coddy logo textTech

La función super()

Parte de la sección Object Oriented Programming 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 le permite extender la funcionalidad del padre en lugar de reemplazarla por completo.

Aquí hay un ejemplo del 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)  # Llamar al __init__ del padre
        self.breed = breed
        print(f"Dog breed set: {breed}")

Crea un objeto dog:

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 Retriever

Utiliza super() para extender los métodos del 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 del padre
        print("Woof!")        # Añade comportamiento específico del perro

Llama al método extendido:

buddy = Dog()
buddy.make_sound()

Salida:

Generic animal sound
Woof!

Sin super(), perderías la funcionalidad del padre:

class Cat(Animal):
    def make_sound(self):
        print("Meow!")  # Solo el sonido del gato, el método del padre es ignorado

cat = Cat()
cat.make_sound()

Salida:

Meow!

Punto clave: Utiliza super() para llamar a métodos de la clase padre desde clases hijas. Esto te permite extender la funcionalidad en lugar de reemplazarla por completo. Los usos comunes incluyen llamar a los métodos __init__ del padre y extender el comportamiento del padre.

challenge icon

Desafío

Intermedio

En este desafío, implementarás una jerarquía de clases Person y Employee usando herencia.

  • person.py: Contiene la clase Person con los atributos name y age
  • employee.py: Contiene la clase Employee que hereda de Person
  • driver.py: Archivo principal para probar tu implementación

Cada archivo contiene comentarios TODO detallados para guiarte a través de la implementación.

Pruébalo tú mismo

# TODO: Importar la clase Person desde person.py
# TODO: Importar la clase Employee desde employee.py

def main():
    # TODO: Crear un objeto Person con el nombre "Alice" y la edad 30
    person = None
    
    # TODO: Crear un objeto Employee con el nombre "Bob", la edad 35 y el trabajo "Developer"
    employee = None
    
    # TODO: Llamar al método introduce() en el objeto Person
    # Resultado esperado: "Hi, I'm Alice and I'm 30 years old"
    
    # TODO: Imprimir una línea en blanco para el espaciado - print()
    
    # TODO: Llamar al método introduce() en el objeto Employee
    # Resultado esperado: 
    # "Hi, I'm Bob and I'm 35 years old"
    # "I work as a Developer"

if __name__ == "__main__":
    main()
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Object Oriented Programming

Practica por tu cuenta: Compilador de Python online