Eric V. Smith added the comment: On 8/15/2013 7:09 PM, Ethan Furman wrote: > > Ethan Furman added the comment: > >> Eric V. Smith added the comment: >> >> I think the answers should be: >> >> - Formats as int if the length of the format spec is >= 1 and it ends in >> one of "bdoxX" (the int presentation types). > > Hmmm. How about defining the characters that will be supported for string > interpretation, and if there are any other > characters in format spec then go int (or whatever the mix-in type is)? I'm > thinking "<^>01234566789". Anything else > ("+", all letter codes, etc.) gets the normal (host-type) treatment.
Is the goal of this approach to implement __format__ in Enum instead of IntEnum? But you can't do this in general, because in the place you implement __format__ you must understand the mix-in type's format strings. Consider if the mix-in type is datetime: it's format strings don't end in a the set of characters you list. So I think you have to implement __format__ on each derived-from-Enum type so you can make the best decisions there. I think we want to have the most possible interpretations give a str output, and only use the base type if that's explicitly asked for. As Eli says, that's one of the main reasons IntEnum exists in the first place. Hence my approach for IntEnum.__format__. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue18738> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com