[Python-Dev] unicode inconsistency? (original) (raw)

Tim Peters tim.peters at gmail.com
Thu Sep 9 21:11:51 CEST 2004


[Neil Schemenauer]

... I suspect the fix will be pretty straight forward (call tpstr and if the result is 'unicode' the produce a 'unicode' string). Again, is there some reason why we don't want this behavior?

Yes: '%s' is documented as "String (converts any python object using str())". It's str(A()) that raises the exception you're seeing, not interpolation. To worm around that, you'll effectively have to duplicate PyObject_Str's implementation (which is more than just calling tp_str -- that may not exist -- you'll end up at least duplicating PyObject_Repr's implementation too) inside PyString_Format(), and end up with a mess that's harder to explain too.

The real problem (IMO) is that we don't have a format code that means "stick the unicode representation here", i.e. there's no format code that triggers PyObject_Unicode() directly. unicode.mod treats '%s' that way, but that isn't documented.



More information about the Python-Dev mailing list