Символ формата строки Python для __unicode__? - PullRequest
5 голосов
/ 24 июня 2010

Во-первых, есть ли один?

Если нет, есть ли хороший способ заставить что-то вроде

print '%s' % obj

для вызова obj.__unicode__ вместо obj.__str__?

Ответы [ 3 ]

4 голосов
/ 24 июня 2010

Просто используйте строку формата Unicode вместо байтовой строки в этой роли:

>>> class X(object):
...   def __str__(self): return 'str'
...   def __unicode__(self): return u'unicode'
... 
>>> x = X()
>>> print u'%s' % x
unicode
1 голос
/ 24 июня 2010

Нет. Это не имело бы смысла, чтобы это имело место.

print (u"%s" % obj).encode(some_encoding) будет использовать obj.__unicode__.

0 голосов
/ 24 июня 2010

Во-первых, есть ли один?

Конечно (вроде).Строка формата Unicode преобразует значения формата в Unicode, подразумевая, что будет вызываться obj.__unicode__ ( reference ).

u'this is a %s' % ('unicode string')

Помимо вышесказанного, нет особой причины, по которой вы не можете быть явным:

print '%s' % (unicode(obj))
...