On Sun, Dec 13, 2020 at 12:34:27AM -0800, Ethan Furman wrote:

[me]
> >>>>class MyValue(int, Enum):
> >...     ONE = 1
> >...     TWO = 2
> >...
> >>>>MyValue.TWO + 3
> >5
> 
> It certainly can be abused for that, but the intended purpose of IntEnum is 
> not to support math operations, but rather to interoperate with existing 
> APIs that are using ints as magic numbers.

Sure, but "ints as magic numbers" are a bit of a special case. If 
TOPLEFT and BOTTOMRIGHT are magic numbers

    (TOPLEFT + BOTTOMRIGHT)//2

is unlikely to make any semantic sense. But I only used int 
because you did :-) A better example, stolen from your earlier one:


    class K(frozenset, Enum):
        DIGITS = frozenset("0123456789")
        LETTERS = frozenset(string.ascii_letters)


DIGITS | LETTERS makes perfect semantic sense. Tell me that's abuse, I 
double-dare you :-)

The bottom line here is that all of the functionality you suggest makes 
sense, but I'm not convinced that the right API is a new and independent 
data type unrelated to Enum. Everything you suggest sounds to me like a 
variation on Enum:

- a way to add new members to an Enum after creation

- a way to create duplicate Enum values that aren't aliases

- a way for enums to automatically inherit behaviour from their values,
  without explicitly mixing another subclass.

These feel like add-ons to the basic Enum data type, not a full-blown 
independent data type.

Or maybe it's just that I don't like the name NamedValue. (Too vague -- 
`x = 1` is a named value. Maybe if you called it FancyEnum or something 
I'd love it :-)


-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/T75R4PG34I6XJUHUB5UAKGTYC5TAHRGW/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to