[Python-Dev] PEP 435 - reference implementation discussion (original) (raw)

Ethan Furman ethan at stoneleaf.us
Sun May 5 08:17:19 CEST 2013


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 enumtype. Patch passes all existing test cases. The patch does two things:

[snip]

2. Instead of directly setting the name and value of the enumitem, 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



More information about the Python-Dev mailing list