[Python-Dev] class name spaces inside an outer function

Guido van Rossum guido at python.org
Sun Apr 28 06:20:07 CEST 2013


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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130427/d6eb5ae0/attachment.html>


More information about the Python-Dev mailing list