官方的Enum How to有this example个:
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
假设我正在做这样的事情,并且我想将.value
-像(3.303e+23, 2.4397e6)
这样的元组-作为Planet
API的不稳定实现细节来对待.我不想让我的API用户依赖它们.相反,我希望它们使用我显式公开的属性,如.surface_gravity
.
有没有一种传统的方式来表示这一点?
我目前只是在文档字符串中添加如下注释:
class Planet(Enum):
""".value is an implementation detail. Use .surface_gravity instead."""
但这似乎太容易忽视了.
如果是普通班,我会选._value
人,而不是.value
人.但在这里,.value
是自动添加的,因为我是从Enum
派生的子类,我看不到覆盖它的方法.