Antoine, question for you:
Do you think enums from different groupings should compare equal?
If no, how would you propose to handle the following:
8<----------------------------------------------------------------------------
--> import yaenum
--> class Color(yaenum.Enum):
... black
... red
... green
... blue
...
--> class Literature(yaenum.Enum):
... scifi
... fantasy
... mystery
... pop
...
--> Color.black
Color('black', value=0)
--> Literature.scifi
Literature('scifi', value=0)
--> black = Color.black
--> scifi = Literature.scifi
--> black == 0
True
--> hash(black)
0
--> scifi == 0
True
--> hash(scifi)
0
--> black == scifi
False
--> hash(0)
0
--> huh = dict()
--> huh[black] = 9
--> huh
{Color('black', value=0): 9}
--> huh[0]
9
--> huh[scifi]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: Literature('scifi', value=0)
--> huh[scifi] = 11
--> huh
{Color('black', value=0): 9, Literature('scifi', value=0): 11}
--> huh[0]
9
--> del huh[0]
--> huh[0]
11
8<----------------------------------------------------------------------------
I do not think enums from different classes should compare equal.
I see two ways around the above issue:
1) make enums unhashable, forcing the user to pick a hash method;
2) make the hash based on something else (like the enum's name) in which case
the enum would not be /completely/ interoperable, even though it is a
subclass
of int
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com