[Python-Dev] Default formatting

2016年10月25日 02:40:34 -0700

Classes that doesn't define the __format__ method for custom PEP 3101 formatting inherits it from parents.
Originally the object.__format__ method was designed as [1]:
 def __format__(self, format_spec):
 return format(str(self), format_spec)
An instance is converted to string and resulting string is formatted according to format specifier. Later this design was reconsidered [2], and now object.__format__ is equivalent to:
 def __format__(self, format_spec):
 assert format_spec == ''
 return format(str(self), '')
Non-empty format specifier is rejected.
But why call format() on resulting string? Why not return resulting string as is? object.__format__ could be simpler (not just implementation, but for understanding):
 def __format__(self, format_spec):
 assert format_spec == ''
 return str(self)
This can change the behaviour in corner case. str(self) can return not exact string, but string subclass with overloaded __format__. But I think we can ignore such subtle difference.
[1] https://www.python.org/dev/peps/pep-3101/
[2] http://bugs.python.org/issue7994
_______________________________________________
Python-Dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to