Python's sad, unimaginative Enum

rusi rustompmody at gmail.com
Tue May 14 22:40:43 EDT 2013


On May 14, 2:24 pm, Jean-Michel Pichavant <jeanmic... at sequans.com>
wrote:
> ----- Original Message -----
> > On Mon, 13 May 2013 13:00:36 +0200, Jean-Michel Pichavant wrote:
>
> > > ----- Original Message -----
> > >> That's the title of this little beast
> > >>http://www.acooke.org/cute/Pythonssad0.htmlif anybody's
> > >> interested.
>
> > >> --
> > >> If you're using GoogleCrap™ please read this
> > >>http://wiki.python.org/moin/GoogleGroupsPython.
>
> > >> Mark Lawrence
>
> > >> --
> > >>http://mail.python.org/mailman/listinfo/python-list
>
> > > python 2.5
>
> > > class Enum:
> > >   class __metaclass__(type):
> > >     def __iter__(self):
> > >       for attr in sorted(dir(self)):
> > >         if not attr.startswith("__"):
> > >           yield getattr(self, attr)
>
> > > class Colours(Enum):
> > >   RED = "red"
> > >   GREEN = "green"
>
> > py> class Experience(Enum):
> > ...     NOVICE = 'novice'
> > ...     GREEN = 'green'
> > ...     EXPERIENCED = 'experienced'
> > ...     MASTER = 'master'
> > ...
> > py>
> > py> Colours.GREEN == Experience.GREEN
> > True
>
> > Oops.
>
> > It's very easy to make something which does a few things that enums
> > should do, and call it an Enum. It's much harder to do a lot of
> > things
> > that enums should do.
>
> > --
> > Steven
>
> I was just proposing a solution I've been using and found quite satisfactory. As for the perfect "enumness" of that solution, I don't know. To be honest, I'm not sure I know the exact definition of an enum, and whether or not the C enum fits 100% that definition. It does the job in python. Some people may find it useful, others may just ignore it.
> Additionally, the "bug" you mentioned can be written in C as well, casts allow to compare apples and oranges:
>
> (Colours::GREEN == (enum Coulours::Colour)Experiences::GREEN)


Enums are like names.
And like names are impossible to do right:
http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/



More information about the Python-list mailing list