My opinions added On Sun, Apr 28, 2013 at 12:32 PM, Ethan Furman <ethan@stoneleaf.us> wrote:
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.
- should an enum item be selectable via __call__ instead of __getitem__ (i.e. Seasons(3) is AUTUMN)
No opinion.
- 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.)
- should avg_temp be enumerated?
IMO No.
- 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 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. -- --Guido van Rossum (python.org/~guido)