(original) (raw)

On Saturday, April 27, 2013, Greg Ewing wrote:


This whole business can be avoided by doing things differently

in the first place. Instead of initialising the enum items by

calling the class, just assign a tuple of args to the name

and have the metaclass make the constructor call.



� 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

� � � self.radius = radius



I think that's better anyway, since it avoids aggravated

violation of DRY by repeating the class name umpteen times.


If you want something like this, doyou really have to inherit from Enum?


--
--Guido van Rossum (python.org/\~guido)