RE: [Python-es] ¿Se puede sobrecargar el "print"?

Hernán Martínez Foffani hernan en orgmf.com.ar
Mie Nov 10 18:56:36 CET 2004


Pues sí, se llama igual que en inglés: operator overload.
Que se llame igual que en C++ supongo que es por "tradición"
e imagino que si se le cambia el nombre (¿por cuál?) sería
difícil de asociar para los usuarios.
Si estiramos un poco la cuerda, en última instancia sí habría
una redefinición porque los objetos de python tiene un slot
predefinido para esos operadores.  (Ese slot es el que permite
extender python con clases escritas en C que implementen la
sobrecarga de operadores.)

-H.

> Aaaah, me había perdido este hilo, sorry. A esto de que estais
> hablando ¿es muy propio llamarle sobrecarga del operador?  Perdón por
> hablar sin saber, pero ahora no recuerdo cómo le llaman en inglés en
> la documentación de python. Viniendo de mentalidad C++ suena un poco
> raro, porque realmente en Python no es que redefinas el operador '+',
> por ejemplo, sino que defines un método __add__ para la clase y el
> intérprete lo invoca cuando se encuentra una suma con objectos de esa
> clase. En realidad el método __add__ no está sobrecargado para la
> clase, porque sólo tiene una definición, ¿no?
>
> En fin, que es lo mismo pero no es igual. No sé si lo he liado más.
> David
>
> Marcos Sánchez Provencio wrote:
>
>> Puedes sobrecargar __str__ (conversión implícita a string) y __repr__
>> (conversión implícita a legible, pero manteniendo la máxima
>> información).
>>
>> soul escribió:
>>
>>> Estoy desarrollando una clase para trabajar con vectores ( los de
>>> las mates de toda la vida :-P ). He sobrecargado los operadores +,-
>>> y * con __add__,__sub__ y __mult__ respectivamente. Pero cuando
>>> hago:
>>>
>>> v=Vector(1,0,0)
>>> print v
>>>
>>> Me devuelve
>>> <__main__.Vector instance at 0xb7f9f50c>
>>>
>>> Me gustaría saber si se puede modificar el "print" para que cuando
>>> se aplique sobre un objeto de esta clase devolviera la lista
>>> [1,0,0].
>>>
>>> Gracias
>>> Soul


------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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