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

Andres Riancho andres.riancho en gmail.com
Vie Sep 5 15:38:06 ART 2014


Ok, creo que entiendo. Entonces traduciendo "Objetito" deberia saber
como decodificarse, entonces deberia verse como:

class Objetito(object):
    def __init__(self, errors='strict', encoding='utf-8')
        self.errors = errors
        self.encoding = encoding

    def __unicode__(self):
        return unicode(self.un_atributo, self.errors, self.encoding)

2014-09-05 15:30 GMT-03:00 fisa <fisadev en gmail.com>:
> 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
> _______________________________________________
> 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



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list