Можно ли определить константу класса внутри Enum?

Python 3.4 представляет новый модульenum, который добавляетперечислимый тип на язык. Документация дляenum.Enum обеспечиваетпример чтобы продемонстрировать, как его можно расширить:

>>> 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

Этот пример также демонстрирует проблему сEnum: вsurface_gravity() свойство метода, константаG определяется, который обычно определяется на уровне класса - но пытается сделать это внутриEnum просто добавил бы его как один из членов перечисления, так что вместо этого он был определен внутри метода.

Если бы класс хотел использовать эту константу в других методах, ее тоже нужно было бы определить, что, очевидно, не идеально.

Есть ли способ определить константу класса внутриEnumИли какой-то обходной путь для достижения того же эффекта?

Ответы на вопрос(5)

Ваш ответ на вопрос