While finishing up the implementation of PEP 498, I realized that the PEP has an error. It says that this code:
f'abc{expr1:spec1}{expr2!r:spec2}def{expr3:!s}ghi' Is equivalent to: 'abc' + expr1.__format__(spec1) + repr(expr2).__format__(spec2) + 'def' + str(expr3).__format__('') + 'ghi' But that's not correct. The right way to call __format__ is: type(expr1).__format__(expr1, spec1) That is, the lookup of __format__ is done on the type, not the instance. Instead of calling __format__, I've changed the code generator to call format(expr1, spec1). As an optimization, I might add special opcodes to deal with this and string concatenation, but that's for another day (if ever). I've posted a new version of the code in issue 24965. I'll update the PEP itself sometime this weekend. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com