[Python-Dev] Default formatting (original) (raw)
Serhiy Storchaka storchaka at gmail.com
Tue Oct 25 05:37:32 EDT 2016
- Previous message (by thread): [Python-Dev] Preference for of patch submission?
- Next message (by thread): [Python-Dev] Default formatting
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message (by thread): [Python-Dev] Preference for of patch submission?
- Next message (by thread): [Python-Dev] Default formatting
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]