Re: sobrecargas semánticas aritméticas en Python

Chema Cortes pych3m4 en gmail.com
Mar Oct 21 19:24:00 CEST 2008


El 2008/10/21 Medardo Rodriguez (Merchise Group) <med.swl en gmail.com> escribió:
> On Mon, Oct 20, 2008 at 7:15 PM, Chema Cortes <pych3m4 en gmail.com> wrote:
>> En python no se puede sobrecargar operadores; pero sí se puede emular
>> el comportamiento de algunos tipos de datos con el fin de extender las
>> operaciones aritméticas a otros objetos.
>
> En python si se recargan todos los operadores.
> Por ejemplo:
>
> <code>
> class Test(object):
>    def __add__(self, other):
>        if isinstance(other, Test):
>            return 'ok'
>        else:
>            raise TypeError, 'incorrect "other"'
>
> t1 = Test()
> t2 = Test()
> print t1 + t2
> </code>

Como ya te han dicho, ésto no es "sobrecargar". Aquí tan sólo estás
definiendo el operador suma para la clase Test, la cuál sólo puede
tener una única definición. Para sobrecargar debería ser posible tener
varias definiciones, en la misma clase o fuera de ella, y que se
decidiera cuál usar por el contexto de evaluación (tipos de los
argumentos, número de argumentos, etc).

El problema de no tener sobrecarga es que la introducción de un nuevo
tipo de dato obliga a cambiar la definición de la clase.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es