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á: