[Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library

R. David Murray rdmurray at bitdance.com
Fri Apr 12 23:17:02 CEST 2013


On Fri, 12 Apr 2013 14:06:55 -0700, Eli Bendersky <eliben at gmail.com> wrote:
> I actually think that having values with different types within a single
> Enum is conceptually wrong and should be disallowed at creation time. With
> enums, you either care or don't care about their actual value. If you don't
> care (the most common use case of an enum, IMHO), then no problem here. If
> you do care, then it's probably for very specific reasons most of which are
> solved by IntEnum. I can't imagine why someone would need differently typed
> values in a single enum - this just seems like a completely inappropriate
> use of an enum to me.

I'm sure someone will come up with one :)

But seriously, even if you require all values to be of the same type,
that doesn't solve the sorting problem:

>>> class Foo(enum.Enum):
...    aa = object()
...    bb = object()
... 
>>> Foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "./enum.py", line 103, in __repr__
    for k in sorted(cls._enums)))
TypeError: unorderable types: object() < object()
    
Now, you could *further* require that the type of enum values be
sortable....but that point you really have no excuse for not allowing
enum values to be compared :)

--David


More information about the Python-Dev mailing list