[Python-Dev] Default formatting
Ethan Furman
ethan at stoneleaf.us
Sun Jan 22 15:07:04 EST 2017
On 01/22/2017 11:48 AM, Serhiy Storchaka wrote:
> On 25.10.16 12:37, Serhiy Storchaka wrote:
>> 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
Can you give an example of this corner case?
--
~Ethan~
More information about the Python-Dev
mailing list