[Python-Dev] enum instances

Ethan Furman ethan at stoneleaf.us
Tue Apr 30 04:17:08 CEST 2013


On 04/29/2013 06:23 PM, Marco Hemmelrath wrote:
> First of all, hi, I'm new to this list.
>
> Following the enum discussions on this list I am kind of confused about how enums and their respective instances, i.e.
> the values, should behave in "normal" context.
> I apologize beforehand for the mass of "questions" because the following contains really many discussed things but they
> all kinda depend on one another, and for terminology which I might've missed.
>
> Considering we have[1]:
>
>      class Color(enum):
>          red = 1
>          white = 2
>          other = "undefined"
>
>      class State(enum):
>          idle = 0
>          busy = 1
>          idling = idle
>          ideling = 0
>
> together with the premises:
>
>      1. type(State.busy) == State
>      2. type(State) == enum
>      3. isinstance(State.idle, State)
>      4. State.idle is State.idle
>
> which should mostly be agreed on (if I didn't misinterpret).
>
>
> How would an enum instance (e.g. State.busy) behave in normal Python expressions? Should these instances just wrap their
> values and provide some simple overhead useful for enums?
>
> I'll just note down a few examples of how I think it could work and express a few thoughts on them:
>
>      1. State.busy == 1
>      2. State.busy == Color.red
>      3. int(State.Busy) is 1
>      4. isinstance(State.busy, int)
>      5. Color.other.startswith("und")
>      6. State.busy is not 1
>      7. State.busy is not Color.red
>      8. State.idle in State
>      9. 0 in State # True, False or raise?
>      10. State.idling is State.idle
>      11. State.idle == State.idling
>      12. State.idle is not State.idling

1 & 2 are False (would be true if using `.value`)

3 is True

4 & 5 are False (again, need `.value`)

6 is not the correct way to use `is` (should be `==`)

7, 8, 9, 10, 11 are True

12 is False



More information about the Python-Dev mailing list