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

Andres Riancho andres.riancho en gmail.com
Vie Sep 5 15:53:04 ART 2014


Oh señor del unicodigo, haste presente ahora e ilumina nuestro camino.

//cc: Facundo?

2014-09-05 15:48 GMT-03:00 fisa <fisadev en gmail.com>:
> Claro.
> Pero vos sabés que me quedé pensando, y quizás tendría sentido que
> esos parámetros se pasen a __unicode__, porque a pesar de que un
> objeto sepa cómo "unicodizarse" (proveyendo __unicode__), puede que
> también le interese hacerlo de diferentes formas, y que eso se decida
> a la hora de que el usuario llama a unicode(). Habría que plantear la
> duda en la lista de desarrollo de python, quizás interesa.
>
> El día 5 de septiembre de 2014, 15:38, Andres Riancho
> <andres.riancho en gmail.com> escribió:
>> 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
>> _______________________________________________
>> 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