Lección 5: Polimorfismo
Polimorfismo en Python
Introducción
¡Hola a todos! Soy Yuscu Mejía y en esta lección vamos a explorar el concepto de polimorfismo en Python. El polimorfismo es un principio fundamental de la programación orientada a objetos que permite tratar objetos de diferentes clases de manera uniforme.
Características
El polimorfismo en Python tiene las siguientes características:
- Permite que diferentes clases implementen el mismo método de diferentes maneras.
- Facilita la extensión y mantenibilidad del código.
- Permite el uso de una interfaz común para objetos de distintas clases.
- Es útil en la implementación de métodos y funciones que pueden operar con objetos de diferentes tipos.
Ejemplos
A continuación, algunos ejemplos de cómo utilizar el polimorfismo en Python, presentados por Yuscu Mejía:
- Definición de una interfaz común para varias clases:
# Definir una clase base llamada 'Animal'
class Animal:
def hacer_sonido(self):
raise NotImplementedError("Este método debe ser implementado por la subclase")
# Definir una subclase llamada 'Perro' que hereda de 'Animal'
class Perro(Animal):
def hacer_sonido(self):
return "Guau"
# Definir una subclase llamada 'Gato' que hereda de 'Animal'
class Gato(Animal):
def hacer_sonido(self):
return "Miau"
# Crear una función que acepta un objeto de tipo 'Animal'
def hacer_sonido_animal(animal):
print(animal.hacer_sonido())
# Crear instancias de 'Perro' y 'Gato'
mi_perro = Perro()
mi_gato = Gato()
# Usar la función con diferentes tipos de animales
hacer_sonido_animal(mi_perro) # Imprime: Guau
hacer_sonido_animal(mi_gato) # Imprime: Miau
Ejercicio 1
Tenemos la clase Figura
class Figura:
def __init__(self, color):
self.color = color
def dibujar(self):
return "mi dibujo es de una figura en general con el color {}".format(self.color)
Crear tres clases (Circulo, Triangulo, y Rectangulo) heredando su atributo color y además, las cuales redefinen el método dibujar de su clase madre Figura, que devolverán el mensaje “mi dibujo es de una {***aca poner la forma que es**} con el color {**el color que fue inicializado**}”.
- Crear una instancia (objeto) de todas las clases y guardarlas en una lista.
- Recorrer la lista creada imprimiendo qué dibuja cada objeto.
#Ejercicio1
class Figura:
def __init__(self, color):
self.color = color
def dibujar(self):
return "mi dibujo es de una figura en general con el color {}".format(self.color)
class Circulo(Figura):
def __init__(self, color):
super().__init__(color)
def dibujar(self):
return "mi dibujo es de un círculo con el color {}".format(self.color)
class Triangulo(Figura):
def __init__(self, color):
super().__init__(color)
def dibujar(self):
return "mi dibujo es de un triángulo con el color {}".format(self.color)
class Rectangulo(Figura):
def __init__(self, color):
super().__init__(color)
def dibujar(self):
return "mi dibujo es de un rectángulo con el color {}".format(self.color)
# a) Crear una instancia de todas las clases y guardarlas en una lista
unaFigura = Figura("rojo")
unRectangulo = Rectangulo("amarillo")
unCirculo = Circulo("verde")
unTriangulo = Triangulo("azul")
lista = [unaFigura, unRectangulo, unCirculo, unTriangulo]
# b) Recorrer la lista creada imprimiendo qué dibuja cada objeto
for unaForma in lista:
print(unaForma.dibujar())

