[issue8128] String interpolation with unicode subclass fails to call __str__

Eric Smith report at bugs.python.org
Tue Apr 27 11:27:49 CEST 2010


Eric Smith <eric at trueblade.com> added the comment:

I agree with Georg. I think 2.x is arguably correct, and 3.1 is broken.

It looks like this has already been fixed in 3.2. It's not immediately obvious why that is, I'll have to look at the code more than the quick glance I just gave it.

Python 3.1.1+ (release31-maint:77299, Jan  4 2010, 08:27:32) 
[GCC 4.1.2 20070626 (Red Hat 4.1.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class MyStr(str):
...     def __str__(self): return "Surprise!"
... 
>>> '%s' % MyStr('foo')
'foo'
>>> '{}'.format(MyStr('foo'))
'Surprise!'

Python 3.2a0 (py3k:80525M, Apr 27 2010, 05:19:53) 
[GCC 4.1.2 20070626 (Red Hat 4.1.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class MyStr(str):
...     def __str__(self): return "Surprise!"
... 
>>> '%s' % MyStr('foo')
'Surprise!'
>>> '{}'.format(MyStr('foo'))
'Surprise!'

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8128>
_______________________________________


More information about the Python-bugs-list mailing list