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

_______________________________________________
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