Am 28.04.2013 22:36, schrieb Ethan Furman: >>> Example enumeration: >>> >>> class Seasons(Enum): SPRING = 1 SUMMER = 2 AUTUMN = 3 WINTER = 4 >>> >>> days_in_year = 365 >>> >>> @property def avg_temp(self): return (75, 92, 66, 33)[int(self)+1] # >>> enums are 1-based >>> >>> >>> Definite Issues: >>> >>> - should enum items be of the type of the Enum class? (i.e. type(SPRING) >>> is Seasons) >> >> IMO Yes. > > I agree. > >>> - should an enum item be selectable via __call__ instead of __getitem__ >>> (i.e. Seasons(3) is AUTUMN) >> >> No opinion. > > I think the callable syntax should be supported for database integration and > consistency with every (?) other type in Python. No opinion about the > __getitem__ portion. > > >>> - should days_in_year be enumerated? >> >> Yes. (If you don't want it to be, and it's not a method/descriptor, move it >> out of the class.) > > Making it a property to have it in the class certainly works for me. > > >>> - should avg_temp be enumerated? >> >> IMO No. > > I agree. > > >>> - for the above two, how should they be included/excluded? >> >> IMO Everything should be enumerated except (a) things with a __get__() >> method (i.e. descriptors) (b) __dunder__ names > > This also works for me. > > >> Also, I believe there's still an issue on the order in which items are >> returned by iter(Seasons), but I don't know which way this is heading. > > As somebody pointed out earlier, the only order which cannot be reconstructed > after the fact is definition order (value order can be, lexical order can be, > etc.). So my vote is to have the default iteration order be the original > definition order, as any other desired order can be added to the class.
Thanks for the summary, that was very helpful. I find myself agreeing with every one of your opinions. Good job :) Georg _______________________________________________ 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