[Python-Dev] Enumeration item arguments?

Eli Bendersky eliben at gmail.com
Tue Apr 30 00:25:48 CEST 2013


On Mon, Apr 29, 2013 at 2:59 PM, Ethan Furman <ethan at stoneleaf.us> wrote:

> In the Planet example we saw the possibility of specifying arguments to
> enum item __init__:
>
> class Planet(Enum):
>     MERCURY = (3.303e+23, 2.4397e6)
>     VENUS   = (4.869e+24, 6.0518e6)
>     EARTH   = (5.976e+24, 6.37814e6)
>     MARS    = (6.421e+23, 3.3972e6)
>     JUPITER = (1.9e+27,   7.1492e7)
>     SATURN  = (5.688e+26, 6.0268e7)
>     URANUS  = (8.686e+25, 2.5559e7)
>     NEPTUNE = (1.024e+26, 2.4746e7)
>
>     def __init__(self, mass, radius):
>         self.mass = mass       # in kilograms
>         self.radius = radius   # in meters
>
> Do we want to support this?
>

I'm -1, and this is yet another bad sign of conflating enums with classes.
If planets want to have attributes and behaviors, let them be normal
classes. If they want a PlanetId *enum member*, that's OK, but there's no
need to intermix the two.

Besides, did we not agree that the only acceptable *members* for enums are
going to be descriptors? In the above, mass & radius are not descriptors.

Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130429/d9fa59b9/attachment.html>


More information about the Python-Dev mailing list