Volver
Ctrl+Space
◑
Copiar
Descargar
Restaurar
Ejecutar
Ctrl+Enter
# POO en Python - Ejemplo 3: Herencia # ====================================== class Animal: def __init__(self, nombre, especie): self.nombre = nombre self.especie = especie def describir(self): print(f"{self.nombre} es un {self.especie}") def hablar(self): print(f"{self.nombre}: ...") def __str__(self): return f"{self.especie.capitalize()} '{self.nombre}'" class Perro(Animal): def __init__(self, nombre, raza): super().__init__(nombre, "perro") self.raza = raza self.trucos = [] def hablar(self): print(f"{self.nombre}: ¡Guau!") def aprender(self, truco): self.trucos.append(truco) print(f"{self.nombre} aprendió: {truco}") def mostrar_trucos(self): if self.trucos: print(f"Trucos de {self.nombre}: {', '.join(self.trucos)}") else: print(f"{self.nombre} no sabe trucos aún") def __str__(self): return f"Perro '{self.nombre}' ({self.raza})" class Gato(Animal): def __init__(self, nombre, interior=True): super().__init__(nombre, "gato") self.interior = interior def hablar(self): print(f"{self.nombre}: ¡Miau!") def __str__(self): tipo = "interior" if self.interior else "exterior" return f"Gato '{self.nombre}' ({tipo})" class Pajaro(Animal): def __init__(self, nombre, puede_volar=True): super().__init__(nombre, "pájaro") self.puede_volar = puede_volar def hablar(self): print(f"{self.nombre}: ¡Pío pío!") def volar(self): if self.puede_volar: print(f"{self.nombre} está volando!") else: print(f"{self.nombre} no puede volar") # Crear animales rex = Perro("Rex", "Labrador") misu = Gato("Misu") piolin = Pajaro("Piolín") print("=== Describir ===") for animal in [rex, misu, piolin]: print(f" {animal}") print() print("=== Polimorfismo: todos hablan ===") for animal in [rex, misu, piolin]: animal.hablar() print() print("=== Métodos específicos ===") rex.aprender("sentarse") rex.aprender("dar la pata") rex.mostrar_trucos() piolin.volar() print() print("=== isinstance ===") print(f"rex es Animal : {isinstance(rex, Animal)}") print(f"rex es Perro : {isinstance(rex, Perro)}") print(f"rex es Gato : {isinstance(rex, Gato)}")