original) (raw)
(On Fri, 12 Apr 2013 15:33:02 -0400, Barry Warsaw <barry@python.org> wrote:You are right, the problem of comparison of disparate types makes ordering
> On Apr 12, 2013, at 11:21 AM, Russell E. Owen wrote:
>
> >I, too, would strongly prefer to see ordering within an enum. I use
> >home-made enums heavily in my code and find ordering comparisons useful
> >there.
>
> This was all hashed out in gory detail on python-ideas. �I feel strongly that
> base EnumValues should be unordered, especially because the underlying values
> can be of any type. �What would you expect to happen in this case:
>
> � � class X(Enum):
> � � � � a = 1
> � � � � b = 'hi'
>
> � � if X.a < myvalue < X.b:
> � � � � # whaa?
>
> I think for most use cases, IntEnums will fit the bill for those who want
> ordered comparisons, and it's also easy to subclass EnumValues to specialize
> the behavior (in fact, this is how IntEnums are implemented).
>
> So if you really want ordered-comparisons-with-untyped-enum-values, you can
> have them. :)
a non-starter. �But by the same token that means you are going to have to
be consistent and give up on having a sorted iteration and a stable repr:
\>>> import enum
\>>> class Foo(enum.Enum):
... � �aa = 1
... � �bb = 2
... � �cc = 'hi'
\>>> Foo
Traceback (most recent call last):� File "./enum.py", line 103, in \_\_repr\_\_
� File "", line 1, in
� � for k in sorted(cls.\_enums)))
TypeError: unorderable types: str() < int()
Eli