On 05/04/2013 10:59 PM, Ethan Furman wrote:
On 05/04/2013 08:50 PM, Tim Delaney wrote:

Think I've come up with a system that works for my auto-numbering case without 
knowing the internals of enum_type. Patch
passes all existing test cases. The patch does two things:


[snip]

2. Instead of directly setting the _name and _value of the enum_item, it lets 
the Enum class do it via Enum.__init__().
Subclasses can override this. This gives Enums a 2-phase construction just like 
other classes.

Not sure I care for this.  Enums are, at least in theory, immutable objects, 
and immutable objects don't call __init__.

Okay, still thinking about `value`, but as far as `name` goes, it should not be passed -- it must be the same as it was in the class definition or we could end up with something like:

--> class AreYouKiddingMe(WierdEnum):
...     who = 1
...     what = 2
...     when = 3
...     where = 4
...     why = 5

--> list(AreYouKiddingMe)
[
  <AreYouKiddingMe.him: 1>,
  <AreYouKiddingMe.that: 2>,
  <AreYouKiddingMe.now: 3>,
  <AreYouKiddingMe.here: 4>,
  <AreYouKiddingMe.because: 5>,
]

and that's assuming we made more changes to support such insane behavior; 
otherwise it would just break.

So no passing of `name`, it gets set in the metaclass.

--
~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