Message 104304 - Python tracker (original) (raw)
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!'