[Python-Dev] constant/enum type in stdlib

Michael Foord fuzzyman at voidspace.org.uk
Tue Nov 23 15:56:36 CET 2010


On 23/11/2010 14:42, Antoine Pitrou wrote:
> On Tue, 23 Nov 2010 14:24:18 +0000
> Michael Foord<fuzzyman at voidspace.org.uk>  wrote:
>> Well, for backwards compatibility reasons the new constants would have
>> to *behave* like the old ones (including having the same underlying
>> value and comparing equal to it).
>>
>> In many cases it is *likely* that subclassing int is a better way of
>> achieving that. Actually looking through the standard library to
>> evaluate it is the only way of confirming that.
>>
>> Another API, that reduces the duplication of creating the enum and
>> setting the names, could be something like:
>>
>>       make_enums("Names", "NAME_ONE NAME_TWO NAME_THREE", base_type=int,
>> module=__name__)
>>
>> Using __name__ we can set the module globals in the call to make_enums.
> I don't understand why people insist on calling that an "enum". enum is
> a C legacy and it doesn't bring anything useful as I can tell. Instead,
> just assign the values explicitly.
>

enum isn't only in C. (They are in C# as well at least.) Wikipedia links 
enum to "enumerated type" and says:

     an enumerated type (also called enumeration or enum) is a data type 
consisting of a set of named values

It sounds entirely appropriate. I have no problem with explicitly 
assigning values instead of doing it automagically.

All the best,

Michael

> Antoine.
>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk


-- 
http://www.voidspace.org.uk/



More information about the Python-Dev mailing list