Python R2


Polimorfismo en Python

Posted in Python por Arturo Elias Antón en 26 agosto 2008
Tags: , , ,

El lenguaje Python soporta el polimorfismo de forma muy cómoda, ya que al ser de tipado dinámico deja que el programador pase cualquier objeto como parámetro de un método.
En otras palabras, si el método le envía un mensaje que el objeto no entiende, el mensaje dará error en el tiempo de ejecución y no en tiempo de diseño.
El polimorfismo es cuando dos o más objetos entienden los mismos mensajes (métodos).

Un ejemplo de esto lo daremos en polimorfismo.py

#!/usr/bin/python
# Nombre de Fichero : polimorfismo.py
class Gato:
    "Clsase Gato"
    def __init__(self):
        self.pos = 0
    def trepar(self):
        pass
    def caminar(self):
        self.pos = self.pos + 10

    def maullar(self):
        print "Miu Miu"

class Perro:
    "Clase Perro"
    def __init__(self):
        self.pos = 0
    def caminar(self):
        self.pos = self.pos +4
    def ladrar(self):
        print "Gua Gua"

def pasearMascota(mascota):
    for i in range(5):
        mascota.caminar()
    print "La mascota quedo en " + str(mascota.pos)

perro=Perro()
gato=Gato()
pasearMascota(perro)
pasearMascota(gato)

La salida de este programa no dará error aunque le pase distintos parámetros al proceso pasearMascota ya que los dos saben caminar.

El resultado que dará será.

>>>
La mascota quedo en 20
La mascota quedo en 50

Observé que los objetos perro y gato son polimorficos en el método caminar, pero no en los métodos maullar y ladrar

Anuncios