[pyar] __unicode__ deberia tomar los mismos parametros que unicode() ?

fisa fisadev en gmail.com
Vie Sep 5 15:30:20 ART 2014


El tema es este: esos parámetros sirven para afectar a cómo se
*decodifica* lo que le pasás a unicode(), cuando eso que le pasás es
algo que tiene que decodificarse. Pero en el caso de __unicode__, el
método ya tiene que devolver algo que sea un unicode, por tanto no
necesita decodificarse y por eso no tendrían sentido los parámetros.

El día 5 de septiembre de 2014, 15:20, Andres Riancho
<andres.riancho en gmail.com> escribió:
> Lista,
>
>     Estoy solucionando algunos problemas de UnicodeDecodeError y me
> encuentro con que en una seccion de mi codigo ocurre algo asi
> (simplificado):
>
> print unicode(un_string, errors, encoding)
> print unicode(un_objeto)
>
>     La implementacion del objeto, tambien simplificada dice:
>
> class Objetito(object):
>     def __unicode__(self):
>         return unicode(self.un_atributo)
>
>     Entonces... algo que me hubiese gustado es poder hacer esto:
>
> print unicode(un_string, errors, encoding)
> print unicode(un_objeto, errors, encoding)
>
> class Objetito(object):
>     def __unicode__(self, errors='strict', encoding='utf-8'):
>         return unicode(self.un_atributo, errors, encoding)
>
>     Pero python no me deja:
>
>>>> class Objetito(object):
> ...     def __unicode__(self, errors='strict', encoding='utf-8'):
> ...         return u'%s %s' % (errors, encoding)
> ...
>>>> o = Objetito()
>>>> unicode(o)
> u'strict utf-8'
>>>> unicode(o, errors='ignore')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: coercing to Unicode: need string or buffer, Objetito found
>>>>
>
>     Se ve que por algun lado verifica que si hay parametros como
> errors y encoding, el primer parametro necesita ser un string.
>
>     Me imagino algunas soluciones posibles a este problema (como no
> llamar a unicode sino implementar mi propio metodo "as_unicode" y
> pasarle los parametros que quiera), pero la realidad es que no
> entiendo bien el porque de esta limitacion.
>
>     Es una limitacion real? Esta solucionado en py3k?
>
> [0] https://docs.python.org/2/library/functions.html#unicode
>
> Saludos,
> --
> Andrés Riancho
> Project Leader at w3af - http://w3af.org/
> Web Application Attack and Audit Framework
> Twitter: @w3af
> GPG: 0x93C344F3
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar



-- 
fisa  -  Juan Pedro Fisanotti


More information about the pyar mailing list