[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