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

2 comentarios to 'Polimorfismo en Python'

Subscribe to comments with RSS o TrackBack to 'Polimorfismo en Python'.

  1. ramckc said,

    Excelente ejemplo polimorfico para mi que estoy aprendiendo Python, voy a guardarlo y ver que aprendo, porque todavia no he visto esto 😛

  2. zodman said,

    Es mas elegante hacer:

    print “La mascota quedo en %s” % mascota.pos

    que hacer un

    print “La mascota quedo en ” + str(mascota.pos)


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: