[Python-Dev] Enumeration item arguments?

Ethan Furman ethan at stoneleaf.us
Tue Apr 30 00:33:25 CEST 2013


On 04/29/2013 03:25 PM, Eli Bendersky wrote:
> On Mon, Apr 29, 2013 at 2:59 PM, Ethan Furman 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.

Good point. We can leave that out, then.

--
~Ethan~


More information about the Python-Dev mailing list