Ben Finney wrote: > Antoon Pardon wrote: > > I just downloaded your enum module for python [from the Cheeseshop] > > and played a bit with it. IMO some of the behaviour makes it less > > usefull. > [...] > > I also think it would be more usefull if enums from different > > enumerations just tested unequal. > [...] > > However, I'm aware that this is not how other Python types behave: > > >>> 23 == 23 > True > >>> 42 == 23 > False > >>> "spam" == 23 > False > > Is there a semantic difference between these cases? Is that difference > enough to want different behaviour? > > Is there some behaviour other than "evaluate to False" or "raise an > exception", that could indicate "not comparable"?
Yes: return NotImplemented. Note that the == operator automagically returns False in this case. >>> "spam".__eq__("spam") True >>> "spam".__eq__("ham") False >>> "spam".__eq__(23) NotImplemented This way, the user could explicitly call __eq__ and check for NotImplemented if he desires the exceptional behavior. - Eric -- http://mail.python.org/mailman/listinfo/python-list