[Python-Dev] transitioning from % to {} formatting

Vinay Sajip vinay_sajip at yahoo.co.uk
Thu Oct 1 15:39:04 CEST 2009

Paul Moore <p.f.moore <at> gmail.com> writes:

> 2. The internal implementation of logger.debug needs to preserve
> string subclasses properly
> But the benefit is that the approach allows anyone to use brace
> formatting in any API that currently accepts % format (assuming string
> subclasses don't get mangled).
> On the one hand, I'd prefer a more general solution. On the other, I'm
> nervous about that "assuming string subclasses..." proviso.

You're right to be nervous: it's not hard to mangle subtypes.

>>> class mystr(str): pass
>>> s = mystr("Abc")
>>> s
>>> type(s)
<class '__main__.mystr'>
>>> s2 = s.replace("A", "a")
>>> s2
>>> type(s2)
<type 'str'>

More information about the Python-Dev mailing list