[Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library

Ethan Furman ethan at stoneleaf.us
Sat Apr 27 04:51:45 CEST 2013


On 04/26/2013 07:29 PM, Glenn Linderman wrote:
> On 4/26/2013 6:22 PM, Greg Ewing wrote:
>> Guido van Rossum wrote:
>>> If we had access to the syntax used for the definition, this would be
>>> simple: assignments define items, def statements define methods. But
>>> at run time we only see the final object resulting from the
>>> definition,
>>
>> Another way we could tell the difference is if the def
>> statement used a different protocol for making bindings
>> than assignment.
>>
>> Suppose a def statement used in a class body called
>> __defitem__, if it exists, instead of __setitem__. Then
>> the metaclass would be able to do different things for
>> defs and assignments.
>
> Well, some assignments could be for non-enumeration items, once you start allowing EnumItem in the list.  Some method
> of grouping enumeration items, or grouping non-enumeration items would solve the problem.
>
> class Color( Enum ):
>      Enum.__enumerationItems__(
>             red=1,
>             green=2,
>             blue=3,
>             )
>      # other methods and assignments

Or, if we go with the metaclass magic of re-using the class/type name (and who doesn't love metaclass magic??):

class Color(Enum):
     red = Color(1)
     green = Color(2)
     blue = Color 3)
     look_ma_not_an_enum = 4

--
~Ethan~


More information about the Python-Dev mailing list