Menu
CoddyTech

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 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)  # Llama al __init__ del 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 Retriever

Usa 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 del padre
        print("Woof!")        # Añade el 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, se ignora el método del padre
cat = Cat()
cat.make_sound()

Salida:

Meow!

Punto clave: usa super() para llamar a los métodos de la clase principal desde las clases secundarias. Esto te permite ampliar la funcionalidad en lugar de reemplazarla por completo. Entre los usos comunes se incluyen llamar a los métodos __init__ de la clase principal y ampliar el comportamiento de la clase principal.

challenge icon

Desafío

Intermedio

En 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 age
  • employee.py: Contiene la clase Employee que hereda de Person
  • driver.py: Archivo principal para probar tu implementación

Cada archivo contiene comentarios detallados de TODO para guiarte durante 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 trabajo "Developer"
    employee = None
    
    # TODO: Llama al método introduce() del objeto Person
    # Expected output: "Hi, I'm Alice and I'm 30 years old"
    
    # TODO: Imprime una línea en blanco para el espaciado - 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()
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 Programación orientada a objetos

Practica por tu cuenta: Compilador de Python online