[Python-ideas] Enums
Ezio Melotti
ezio.melotti at gmail.com
Thu Jul 28 14:17:52 CEST 2011
Hi,
On 28/07/2011 4.12, Nick Coghlan wrote:
> On Thu, Jul 28, 2011 at 10:56 AM, Barry Warsaw<barry at python.org> wrote:
>> Again, looking at how I've used them extensively over the last several years,
>> I would much rather write
>>
>> class Colors(Enum):
>> red = 1
>> green = 2
>> blue = 3
>>
>> than
>>
>> red = NamedValue('red', 1)
>> green = NamedValue('green', 2)
>> blue = NamedValue('blue', 3)
>>
>> To me, the duplication is jarring and error prone.
> Yeah, I'd actually be inclined to define such values programmatically
> rather than writing them out manually like that:
>
> _named_colours = dict(
> red=0xFF0000,
> green=0x00FF00,
> blue=0x0000FF,
> )
> globals().update((k, namedvalue(k, v)) for k, v in _named_colours)
A method like Colors.make_global([namespace]) could be added to do the
same thing.
>
> (where namedvalue is the value based factory function I mentioned in
> the recipe post)
>
> However, my contention is that the fundamentally interesting operation
> is associating names with values (as your EnumValue class does). Enums
> and their ilk are then just syntactic sugar for defining groups of
> such values without needing to repeat yourself.
>
> Cheers,
> Nick.
>
Best Regards,
Ezio Melotti
More information about the Python-ideas
mailing list