[Python-Dev] enum discussion: can someone please summarize open issues?
Steven D'Aprano
steve at pearwood.info
Mon Apr 29 07:36:23 CEST 2013
On Sun, Apr 28, 2013 at 09:02:15PM -0700, Ethan Furman wrote:
> Two examples:
>
> - the first few integers (up to 256 now, I think) are pre-created by the
> interpreter; when you do `int('7')` you are not getting a brand-new, never
> before used, integer 7 object, you're getting a cached integer 7 object.
>
> - all booleans (yup, both of them ;) are pre-created; when you ask for a
> True or a False, you are not getting a brand new one.
>
> Since `is` is discouraged, both of those cases could go the other way
> (always creating a brand new object) and properly written programs would
> continue to run just fine -- slower, but fine.
>
> Enums are the same: they could return brand new instances every time, and
> programs using `==` to compare will keep on working. That they don't is an
> implementation detail.
That's not how I understand it. I expected that the correct way to use
enums is with identity checks:
if arg is Season.SUMMER:
handle_summer()
At least, that's how I'm used to dealing with sentinels or pseudo-enums
created with object(), and I just expected it to carry over to actual
enums. Should I reset my thinking and use == with flufl.enums?
--
Steven
More information about the Python-Dev
mailing list