On Mon, Feb 25, 2013 at 8:56 AM, Antoine Pitrou <solip...@pitrou.net> wrote:

> Le Mon, 25 Feb 2013 10:44:33 -0600,
> Skip Montanaro <s...@pobox.com> a écrit :
> > > Besides "we just don't need them int-based in these use-cases" what
> > > are the reasons for the strong desire to have them be valueless?
> >
> > Not sure about other people, but piggybacking off C semantics, while
> > convenient, reflects the limitations of the C implementation more than
> > anything else.  An enumeration, while you can count its items, doesn't
> > imply that the elements of the enumeration are naturally ordered.  If
> > you force an underlying association with integers, you imply ordering
> > where none naturally exists.   Given this:
> >
> > critters = enum(DOG, CAT, RACCOON)
> >
> > what does it mean that DOG < CAT?
>
> It doesn't mean anything, but so what? "DOG" > "CAT" doesn't mean much
> either, and yet it's legal in Python.
>

"DOG" > "CAT" invokes lexicographical comparison between two strings, a
well-defined and sensical operations. It simply means that in a sorted list
of strings, "CAT" will come before "DOG". This is different from an
enumeration that attempts to (at least logically) restrict a value to a set
of pre-defined entities.

That said, I'm slowly starting to realize that enums try to impose a bit of
static typing on Python, which may be the cause for so much friction :-/

Eli
_______________________________________________
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

Reply via email to