On 04/25/2013 02:17 PM, Barry Warsaw wrote: > On Apr 25, 2013, at 01:18 PM, Ethan Furman wrote: > >>> Ignore the single argument call syntax for Enums please. As Eli pointed >>> out, you have getitem syntax for this and the single argument call syntax >>> is deprecated. It will be removed in a future version of flufl.enum and >>> need not appear in stdlib enum. TOOWTDI. >> >> For me, the getitem syntax on a class seems odd and the call syntax is >> TOOWTDI. > > Not if you think of it as a lookup operation instead of an instantiation > operation. It really is the former because neither syntax creates new enum > item objects, it just returns an already existing one. True, but I don't. ;) I think the closest comparable thing in Python is the boolean class; while True and False are not attributes of bool, they are the only two instances, and invoking bool is going to return one of the existing bool instances (which is to say, True or False). It's basically a conversion from whatever to bool. --> bool('something') # returns True --> bool(None) # returns False Similarly, an Enum converts a string or a number to it's comparable enumerator (right word, Stephen?) --> class Animal(Enum): ... ant = 1 ... bee = 2 ... fly = 3 --> Animal(2) # should return Animal.bee --> Animal('ant') # should return Animal.ant It seems to me that storing the instances on the class as attributes is mostly for convenience; we could just as easily not, and change the repr of enumerators to '<Animal> ant [int=1]'. -- ~Ethan~
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4