On 05/05/2013 04:14 PM, Tim Delaney wrote:

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__.

[...]

My preferred solution is 1 (for the reason mentioned above) but it does not 
require exposing the metaclass publically
(that's obtainable via type(Enum)). It does require a way to get the enum names 
before calling the base metaclass
__new__, but that does not necessarily imply that I'm advocating exposing 
_enum_names (or at least, not directly).

My preferred way would probably be a note that the dictionary returned from the 
enum metaclass __prepare__ implements an
enum_names() or maybe __enum_names__() method which returns an iterator over 
the enum instance names in definition
order. The way this is implemented by the dictionary would be an implementation 
detail.

I like having an __enum_names__() that returns a list or tuple of (name, value) 
pairs in definition order.

--
~Ethan~
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to