[Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library
Glenn Linderman
v+python at g.nevcal.com
Fri Apr 26 01:59:52 CEST 2013
On 4/25/2013 3:23 PM, Barry Warsaw wrote:
> My point is, "days of the week" has a natural ordering, so why wouldn't you
> use IntEnum for that? Problem solved.
While the ordering is natural, some implementations start from 0, some
start from 1, and on the naming side, some start from Sunday, and some
start from Monday. So there are lots of opportunities for the numbers
vary, and having easy conversions to int which expose those numbers and
allow comparisons to integers, is adding problems, not solving them.
On 4/25/2013 3:36 PM, Ethan Furman wrote:
> People like things sorted (or am I alone here?) There are three
> obvious natural orderings:
>
> 1 - value
>
> 2 - definition order
>
> 3 - name
>
> And that's my order of preference for them.
So, being blissfully unaware of the implementation issues, not having
yet read the implementation, I suggest that the preferred iteration
order should be a characteristic of the Enum when defined, and/or that
there should be a method to obtain a list in any of the natural
orderings (specifying value ordering may add a restriction that the
values be orderable, if done at definition time; if done only on
retrieval, attempting to access the list by value would raise an exception).
Another possible ordering would be "random", and for enumerations with
values that are tuples or lists or hashes, ordering by some specified
element would be conceivable. On the other hand, except for "definition"
order, all the other possible orderings could be derived externally to
the enumeration.
So if enumerations preserve/provide "definition" order, all the others
could be implemented externally or as subtypes. "Definition" order, then
is the basic ordering for enumerations because it cannot be externally
derived, other than by reading the source code.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130425/77113b57/attachment.html>
More information about the Python-Dev
mailing list