git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Friday Finking: Enum by gum


On 24/01/2020 04:26, DL Neil via Python-list wrote:
> Questions:
> 
> Have I made proper sense of this? (please don't laugh too much)

Um.

My basic take on enums is that they provide a convenient namespace to 
collect together related constants.  API flags and opcodes are an 
obvious example of related constants you would want to keep together, 
but Python enums can be more complex than that both as structured data 
and associated functions.

> Is the above 'interfacing' an appropriate use of enum-s; or is it really 
> 'overkill' or posturing?

I think it's an entirely appropriate use of enums.  In fact it's pretty 
much my only use of them.  One caveat: when you care about the value of 
a constant, set it explicitly.  Don't rely on auto() to come up with the 
right number for you, because the documentation really gives you no 
guarantees.

> Python v3.6+ brings Flag-enums into the game. These seem better for 
> interface use, as described. Do you prefer them to the 'plain-vanilla' 
> enum, and for what reason?

I prefer them when the interface calls for flags, because they behave 
like flags.  I use plain enums when I don't require that behaviour. 
It's horses for courses, as ever.

-- 
Rhodri James *-* Kynesim Ltd