[Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library (original) (raw)

Antoine Pitrou solipsis at pitrou.net
Tue Apr 23 16:33:02 CEST 2013


Le Tue, 23 Apr 2013 10:24:18 -0400, "R. David Murray" <rdmurray at 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".

Regards

Antoine.



More information about the Python-Dev mailing list