image_printModo impresión y lectura

Código completo (para referencia)

class Animal:
    def __init__(self, nombre):
        self.nombre = nombre

    def hablar(self):
        return "Sonido genérico"
class Perro(Animal):
    def hablar(self):
        return "Guau!"
class Gato(Animal):
    def hablar(self):
        return "Miau!"
animales = [Perro("Firulais"), Gato("Misu")]

for animal in animales:
    print(f"{animal.nombre} dice: {animal.hablar()}")

Primera parte: clase Animal

class Animal:
  • class Animal:
    Declara una nueva clase llamada Animal.
    Una clase es un “molde” o “plantilla” para crear objetos del tipo Animal.
    def __init__(self, nombre):
  • def __init__(self, nombre):
    Define el método especial __init__, que es el constructor.
    Se ejecuta automáticamente cuando creas un Animal.
    • self representa al propio objeto.
    • nombre es un parámetro que recibirá el nombre del animal.
        self.nombre = nombre
  • self.nombre = nombre
    Crea un atributo llamado nombre dentro del objeto.
    Guarda en self.nombre el valor que se pasa al crear el animal.
    Es decir, el objeto recordará su nombre.
    def hablar(self):
  • def hablar(self):
    Declara un método llamado hablar para la clase Animal.
    Este será el comportamiento “genérico” de hablar.
        return "Sonido genérico"
  • return "Sonido genérico"
    Cuando se llame a hablar() en un Animal, devolverá esta cadena.
    Más adelante, las clases hijas lo cambiarán por sonidos más específicos.

Segunda parte: clase Perro que hereda de Animal

class Perro(Animal):
  • class Perro(Animal):
    Crea una clase Perro que hereda de Animal.
    Eso significa que Perro tiene todo lo de Animal (como nombre), pero puede añadir o cambiar cosas.
    def hablar(self):
  • def hablar(self):
    Define el método hablar en Perro.
    Este método sobrescribe (reemplaza) el hablar genérico de Animal.
        return "Guau!"
  • return "Guau!"
    Cuando se llame a hablar() en un Perro, devolverá "Guau!".

Tercera parte: clase Gato que también hereda de Animal

class Gato(Animal):
  • class Gato(Animal):
    Declara la clase Gato que también hereda de Animal.
    Igual que Perro, tiene nombre y puede hablar.
    def hablar(self):
  • def hablar(self):
    Sobrescribe el método hablar para los gatos.
        return "Miau!"
  • return "Miau!"
    Cuando se llame a hablar() en un Gato, devolverá "Miau!".

Cuarta parte: creando objetos y usando polimorfismo

animales = [Perro("Firulais"), Gato("Misu")]
  • animales = [...]
    Crea una lista llamada animales.
  • Perro("Firulais")
    Crea un objeto de tipo Perro con nombre = "Firulais".
    Internamente llama a __init__ de Animal y guarda ese nombre.
  • Gato("Misu")
    Crea un objeto de tipo Gato con nombre = "Misu".
    También usa el constructor heredado.
  • La lista contiene ahora dos objetos: un perro y un gato.
for animal in animales:
  • for animal in animales:
    Inicia un bucle que recorre cada elemento de la lista animales.
    En cada vuelta, la variable animal será:
    • Primero, el Perro("Firulais")
    • Después, el Gato("Misu")
    print(f"{animal.nombre} dice: {animal.hablar()}")
  • print(f"{animal.nombre} dice: {animal.hablar()}")
    Usa una f-string para formatear el texto.
  • Aquí es donde aparece el polimorfismo:
    • Si animal es un Perro, hablar() devuelve "Guau!".
    • Si animal es un Gato, hablar() devuelve "Miau!".
  • En pantalla verás:
    • Firulais dice: Guau!
    • Misu dice: Miau!
image_printModo impresión y lectura
Translate » Traductor