Traducción de métodos especiales

Joan Ordinas jordinas en gmail.com
Mie Dic 29 09:02:06 CET 2004


No he conseguido encontrar documentación que describa lo que creo es
un comportamiento correcto de Python 2.3.3. El caso es que al ejecutar
un método especial (__str__, por ejemplo) la documentación dice que,
por ejemplo,

    str(o)

se traduce a

    o.__str__()

pero el caso es que se traduce a

    type(o).__str__(o)

o escrito de otra forma, para las nuevas clases

    o.__class__.__str__(o)

Esto sucede con todos los métodos especiales. Demostración:

>>> class C(object):
...     def __str__(self):
...         return 'C.__str__'

>>> o = C()

>>> o.__str__ = lambda : 'o.__str__'

>>> o.__str__()
'o.__str__'

>>> str(o)
'C.__str__'

>>> print o
C.__str__

¿Alguien ha encontrado documentació que confirme esta impresión?

JJOR

-- 
WYSIWYG victims: the lost generation!




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