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

fisa fisadev en gmail.com
Vie Sep 5 15:48:08 ART 2014


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


More information about the pyar mailing list