On Fri, 12 Apr 2013 15:33:02 -0400, Barry Warsaw <ba...@python.org> wrote: > 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. :)
You are right, the problem of comparison of disparate types makes ordering 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 "<stdin>", line 1, in <module> File "./enum.py", line 103, in __repr__ for k in sorted(cls._enums))) TypeError: unorderable types: str() < int() --David _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com