string interpolation mystery in Python 2.6

Scott David Daniels Scott.Daniels at Acm.Org
Wed Sep 16 10:44:00 EDT 2009


Alan G Isaac wrote:
> George Brandl explained it to me this way:
> It's probably best explained with a bit of code:
>> >>> class C(object):
> ... def __str__(self): return '[str]'
> ... def __unicode__(self): return '[unicode]'
> ...
> >>> "%s %s" % ('foo', C())
> 'foo [str]'
> >>> "%s %s" % (u'foo', C())
> u'foo [unicode]'
> I.e., as soon as a Unicode element is interpolated into 
> a string, further interpolations automatically request 
> Unicode via __unicode__, if it exists.

Even more fun (until you know what is going on):
 >>> c = C()
 >>> "%s %s %s" % (c, u'c', c)
 u'[str] c [unicode]'
--Scott David Daniels
Scott David Daniels at Acm.Org


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /