[Python-Dev] PEP 435: initial values must be specified? Yes

Guido van Rossum guido at python.org
Mon May 6 00:43:48 CEST 2013


On Sun, May 5, 2013 at 3:34 PM, Tim Delaney <timothy.c.delaney at gmail.com> wrote:
> On 6 May 2013 08:00, Guido van Rossum <guido at python.org> wrote:
>>
>> On Sun, May 5, 2013 at 2:55 PM, Tim Delaney <timothy.c.delaney at gmail.com>
>> wrote:
>> > So long as I can get one of the requirements documented to implement an
>> > auto-number syntax I'll be happy enough with stdlib enums I think.
>>
>> Specifically what do you want the PEP to promise?

> It was mentioned in the other threads, but the requirement is either:
>
> 1. That the dictionary returned from <enum metaclass>.__prepare__ provide a
> way to obtain the enum instance names once it's been populated (e.g. once
> it's been passed as the classdict to __new__). The reference implementation
> provides a _enum_names list attribute. The enum names need to be available
> to a metaclass subclass before calling the base metaclass __new__.
>
> OR
>
> 2. A way for subclasses of Enum to modify the value before it's assigned to
> the actual enum - see the PEP 435 reference implementation - discussion
> thread where I modified the reference implementation to give enum instances
> 2-phase construction, passing the value to Enum.__init__. This way is more
> limited, as you need to use an appropriate mix-in type which puts certain
> constraints on the behaviour of the enum instances (e.g. they *have* to be
> int instances for auto-numbering). The implementation is also more complex,
> and as noted in that thread, __init__ might not be appropriate for an Enum.

I'll let Eli or Ethan respond to this. It sounds fine to me to support
you with some kind of hook in the spec, even though I personally would
rather assign my enum values explicitly (I'm old-fashioned that way
:-).

-- 
--Guido van Rossum (python.org/~guido)


More information about the Python-Dev mailing list