Python logo - Curso de Python desde cero

POO V: Polimorfismo en Python

Vemos qué es el polimorfismo en la programación orientada a objetos de Python

Continuamos con nuestro curso de Python desde cero para principiantes, donde seguimos viendo la Programación Orientada a Objetos. En el anterior capítulo vimos la Herencia en la POO de Python y ahora vamos a aprender el concepto de poliformismo.

El polimorfismo define la capacidad de tomar diferentes formas. El polimorfismo en Python nos permite definir métodos en la clase secundaria con el mismo nombre definido en su clase principal. En este artículo, entraremos en los detalles del polimorfismo en Python en la siguiente secuencia:

¿Qué es el polimorfismo?

Polimorfismo proviene de las palabras griegas Poly (muchos) y morfismo (formas). Significa que el mismo nombre de función se puede usar para diferentes tipos. Esto hace que la programación sea más intuitiva y fácil.

En Python, tenemos diferentes formas de definir el polimorfismo. Así que avancemos y veamos cómo funciona el polimorfismo en Python.

Polimorfismo en Python

Una clase secundaria hereda todos los métodos de la clase principal. Sin embargo, en algunas situaciones, el método heredado de la clase principal no encaja del todo en la clase secundaria. En tales casos, deberá volver a implementar el método en la clase secundaria.

Existen diferentes métodos para usar el polimorfismo en Python. Puede usar diferentes funciones, métodos de clase u objetos para definir el polimorfismo. Entonces, avancemos y echemos un vistazo a cada uno de estos métodos en detalle.

Polimorfismo con Función y Objetos

Puede crear una función que pueda tomar cualquier objeto, lo que permite el polimorfismo.

Tomemos un ejemplo y creemos una función llamada “mi_funcion()” que tomará un objeto al que llamaremos “objeto”. Ahora, démosle a la función algo que hacer que use el objeto que le pasamos. En este caso, llamemos a los métodos tipo() y color(), cada uno de los cuales está definido en las dos clases ‘Tomate’ y ‘Manzana’. Ahora, hay que crear instancias de las clases ‘Tomate’ y ‘Manzana’ si no las tenemos ya:

class Tomate(): 
    def tipo(self): 
        print("Verdura") 

    def color(self):
        print("Rojo") 

class Manzana():
    def tipo(self): 
        print("Fruta") 

    def color(self): 
        print("Rojo") 
      

def mi_funcion(objeto): 
    objeto.tipo() 
    objeto.color()
        
objeto_tomate = Tomate() 
objeto_manzana = Manzana() 
mi_funcion(objeto_tomate)
mi_funcion(objeto_manzana)

Salida:

Verdura
Rojo
Fruta
Rojo

Polimorfismo con métodos de clase

Python usa dos tipos de clases diferentes de la misma manera. Aquí, debe crear un bucle for que itere a través de una tupla de objetos. A continuación, debe llamar a los métodos sin preocuparse por el tipo de clase de cada objeto. Suponemos que estos métodos realmente existen en cada clase.

Aquí hay un ejemplo para mostrar polimorfismo con clase:

class Spain():
    def capital(self):
        print("Madrid")
 
    def idioma(self):
        print("Español")
 

class Portugal():
    def capital(self):
        print("Lisboa")
 
    def idioma(self):
        print("Portugués")
 
objeto_spain = Spain()
objeto_portugal = Portugal()

for pais in (objeto_spain, objeto_portugal):
    pais.capital()
    pais.idioma()

Salida:

Madrid
Español
Lisboa
Portugués

Polimorfismo con herencia

El polimorfismo en python define métodos en la clase secundaria que tienen el mismo nombre que los métodos en la clase principal. En la herencia, la clase secundaria hereda los métodos de la clase principal. Además, es posible modificar un método en una clase secundaria que haya heredado de la clase principal.

Esto se usa principalmente en los casos en que el método heredado de la clase principal no se ajusta a la clase secundaria. Este proceso de volver a implementar un método en la clase secundaria se conoce como anulación de métodos. Aquí hay un ejemplo que muestra polimorfismo con herencia:

class Pajaro:
    def intro(self):
        print("Hay diferentes tipos de pájaros")
 
    def vuelo(self):
        print("La mayoría de los pájaros pueden volar pero algunos no")
 
class Loro(Pajaro):
    def vuelo(self):
        print("Los loros pueden volar")
 
class Pinguino(Pajaro):
    def vuelo(auto):
        print("Los pingüinos no vuelan")
 
objeto_pajaro = Pajaro()
objeto_loro = Loro()
objeto_pinguino = Pinguino()
 
objeto_pajaro.intro()
objeto_pajaro.vuelo()
 
objeto_loro.intro()
objeto_loro.vuelo()
 
objeto_pinguino.intro()
objeto_pinguino.vuelo()

Producción:

Hay diferentes tipos de pájaros
La mayoría de los pájaros pueden volar pero algunos no
Hay diferentes tipos de pájaros
Los loros pueden volar
Hay diferentes tipos de pájaros
Los pingüinos no vuelan

Estas son diferentes formas de definir el polimorfismo en Python. Con esto, hemos llegado al final de nuestro artículo. Espero que hayas entendido qué es el polimorfismo y cómo se usa en Python. En la siguiente entrega de nuestro curso de python veremos las Cadenas o strings en Python.

Scroll al inicio