On Tue, 23 Apr 2013 16:33:02 +0200, Antoine Pitrou <solip...@pitrou.net> wrote: > Le Tue, 23 Apr 2013 10:24:18 -0400, > "R. David Murray" <rdmur...@bitdance.com> a écrit : > > > > > > I'm having a problem with the proposed implementation. I haven't > > > found any mention of it, so apologies if this has already been > > > discussed: > > > > > > >>> from flufl.enum import * > > > >>> class C(Enum): > > > ... a = 1 > > > ... b = 2 > > > ... > > > >>> C.a.__class__ > > > <class 'flufl.enum._enum.EnumValue'> > > > >>> isinstance(C.a, C) > > > False > > > >>> isinstance(C(1), C) > > > False > > > > > > It would really be better if instances were actual instances of the > > > class, IMO. > > > > The first False looks correct to me, I would not expect an enum value > > to be an instance of the class that holds it as an attribute. The > > second certainly looks odd, but what does it even mean to have an > > instance of an Enum class? > > Perhaps I should have added some context: > > >>> class C(Enum): > ... a = 1 > ... b = 2 > ... > >>> C(1) > <EnumValue: C.a [value=1]> > >>> C[1] > <EnumValue: C.a [value=1]> > > It is simply the same as a __getattr__ call. > > That said, I don't see why it wouldn't make sense for an enum value to > be an instance of that class. It can be useful to write > `isinstance(value, MyEnumClass)`. Also, any debug facility which has a > preference for writing out class names would produce a better output > than the generic "EnumValue".
Ah. I'd be looking for a bug every time I saw isinstance(value, myEnumClass). A better class name for values and an API for getting that class from the EnumClass would be nice, though. (So that you could write "isinstance(value, MyEnumClass.ValueClass)", say.) --David
_______________________________________________ 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