[Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library
Ethan Furman
ethan at stoneleaf.us
Sat Apr 27 19:04:10 CEST 2013
On 04/27/2013 09:01 AM, Guido van Rossum wrote:
>
> Hm... A lightbulb just went off. Objects representing both undecorated
> and decorated methods have a __get__() method, courtesy of the
> descriptor protocol. Maybe checking for that will work? It feels
> Pythonic to me: it uses a corner of the language that most people
> don't even know exists (*), but it produces the desired effect in
> almost all cases that matter, the pattern is simple to describe and
> easy to use without thinking about it, and for experts the rules are
> completely clear, uncomplicated, and free of heuristics, so it is
> possible to reason about corner cases.
While this will certainly work, it means you can't have class variables that happen to be the same type as the enum --
so no int in an IntEnum, for example.
The solution I like best is the helper class (called, originally enough, enum), and only those items get transformed:
class Planet(IntEnum):
MERCURY = enum(1)
VENUS = enum(2)
EARTH = enum(3)
rough_pi = 3 # not transformed
--
~Ethan~
More information about the Python-Dev
mailing list