例:
class Planet(Enum):
MERCURY = (mass: 3.303e+23, radius: 2.4397e6)
def __init__(self, mass, radius):
self.mass = mass # in kilograms
self.radius = radius # in meters
参考:https : //docs.python.org/3/library/enum.html#planet
我为什么要这样做?如果构造函数列表中有一些原始类型(int,bool),则最好使用命名参数。
虽然不能像使用枚举描述那样使用命名参数,但是使用namedtuple
mixin可以获得类似的效果:
from collections import namedtuple
from enum import Enum
Body = namedtuple("Body", ["mass", "radius"])
class Planet(Body, Enum):
MERCURY = Body(mass=3.303e+23, radius=2.4397e6)
VENUS = Body(mass=4.869e+24, radius=6.0518e6)
EARTH = Body(mass=5.976e+24, radius=3.3972e6)
# ... etc.
...在我看来,这更清洁,因为您不必编写__init__
方法。
使用示例:
>>> Planet.MERCURY
<Planet.MERCURY: Body(mass=3.303e+23, radius=2439700.0)>
>>> Planet.EARTH.mass
5.976e+24
>>> Planet.VENUS.radius
6051800.0
请注意,按照docs的规定,“混合类型必须先出现在Enum
碱基序列中”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句