¿Es posible definir una constante de clase dentro de un Enum?

Python 3.4 introduce un nuevo móduloenum, que añade untipo enumerado a la lengua. La documentación paraenum.Enum proporcionaun ejemplo Para demostrar cómo se puede ampliar:

>>> 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
...     @property
...     def surface_gravity(self):
...         # universal gravitational constant  (m3 kg-1 s-2)
...         G = 6.67300E-11
...         return G * self.mass / (self.radius * self.radius)
...
>>> Planet.EARTH.value
(5.976e+24, 6378140.0)
>>> Planet.EARTH.surface_gravity
9.802652743337129

Este ejemplo también demuestra un problema conEnum: en elsurface_gravity() método de propiedad, una constanteG se define, lo que normalmente se definiría a nivel de clase, pero intentando hacerlo dentro de unEnum simplemente lo agregaría como uno de los miembros de la enumeración, por lo que en su lugar se ha definido dentro del método.

Si la clase quisiera usar esta constante en otros métodos, también tendría que definirse allí, lo que obviamente no es lo ideal.

¿Hay alguna manera de definir una constante de clase dentro de unEnum, o alguna solución para lograr el mismo efecto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta