On May 14, 2:24 pm, Jean-Michel Pichavant <jeanmic...@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/ -- http://mail.python.org/mailman/listinfo/python-list