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

Andres Riancho andres.riancho en gmail.com
Vie Sep 5 15:20:44 ART 2014


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


More information about the pyar mailing list