Enum questions.
Rustom Mody
rustompmody at gmail.com
Wed Apr 13 08:33:00 EDT 2016
On Wednesday, April 13, 2016 at 5:39:13 PM UTC+5:30, Michael Selik wrote:
> On Wed, Apr 13, 2016, 12:14 PM Antoon Pardon
> wrote:
>
> > I have been looking at the enum documentation and it
> > seems enums are missing two features I rather find
> > important.
> >
> > 1) Given an Enum value, someway to get the next/previous
> > one
> >
> > 2) Given two Enum values, iterate over the values between
> > them.
> >
> > Did I miss those in the documentation or are they really
> > missing?
> >
>
> An Enum corresponds to "nominal" data that is coded as a number simply for
> storage rather than meaning. If you want next/previous you are thinking of
> "ordinal" data which is coded as numbers for the purpose of comparison (but
> not arithmetic). Placing nominal data in order would be comparing apples
> and oranges, so to speak.
>
> However, IntEnum should give you the features you want.
>
> https://docs.python.org/3/library/enum.html#intenum
>
> >
from enum import Enum
# General (not contiguous) enum
class Color(Enum):
red = 10
blue = 20
green = 30
>>> Color.__members__
OrderedDict([('red', <Color.red: 1>), ('blue', <Color.blue: 2>), ('green', <Color.green: 3>)])
>>> set(Color.__members__)
set(['blue', 'green', 'red'])
>>> {n:Color[n] for n in set(Color.__members__)}
{'blue': <Color.blue: 20>, 'green': <Color.green: 30>, 'red': <Color.red: 10>}
>>>
More information about the Python-list
mailing list