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