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

Michael Foord fuzzyman at voidspace.org.uk
Sat Oct 3 19:35:29 CEST 2009

Paul Moore wrote:
> 2009/10/1 Eric Smith <eric at trueblade.com>:
>> It's tangential, but in the str.format case you don't want to check for just
>> '{asctime}', because you might want '{asctime:%Y-%m-%d}', for example.
>> But there are ways to delay computing the time until you're sure it's
>> actually being used in the format string, without parsing the format string.
>> Now that I think of it, the same technique could be used with %-formatting:
> Still tangential, but it seems to me that this discussion has exposed
> a couple of areas where the logging interface is less than ideal:
> - The introspection of the format string to delay computing certain
> items (Eric's suggestion may be an improvement here).
> - The "call str() on any non-string object to get a format string" API
> (which precludes string subclasses).

Calling str on non-string objects to get a format string does not 
(prima-facie) preclude string subclasses:

 >>> class X(str): pass
 >>> class Y(object):
...  def __str__(self):
...   return X('foo')
 >>> a = Y()
 >>> type(str(a))
<class '__main__.X'>


> I suspect other APIs will exist with similar issues once the whole
> question of supporting multiple format syntaxes gets wider
> publicity...
> Paul.
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk


More information about the Python-Dev mailing list