可以将命名参数与Python枚举一起使用吗?

凯维纳佩

例:

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),则最好使用命名参数。

零比雷埃夫斯

虽然不能像使用枚举描述那样使用命名参数,但是使用namedtuplemixin可以获得类似的效果

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以将“令牌粘贴运算符”与“const”模板参数一起使用吗?

我可以将pandas.dataframe.isin()与数字公差参数一起使用吗?

您可以将训练参数与 tf.keras.Model() 构造函数一起使用吗?

我可以将 for_each 元参数与文件功能一起使用吗?

概念可以与模板模板参数一起使用吗?

可以使用JDBI将@Bind与枚举和其他任意类型一起使用吗?

是否可以将“ zip()”与step参数一起使用?

可以将ThreadStart方法与“异步”一起使用吗?

可以将tput与组合功能一起使用吗?

我可以将FlatfileItemReader与Taskexecutor一起使用吗?

我可以将Materializecss与dart一起使用吗?

可以将Internet Explorer与Docker一起使用吗?

可以将MapDotNet与Leaflet一起使用吗?

可以将Specflow与Resharper一起使用吗?

可以将xUnit与LINQPad一起使用吗?

可以仅将JsonSchema与Mongoose一起使用吗?

我可以将accept()与IOCP一起使用吗?

可以将Realm与Angular 2一起使用吗?

我可以将HaxeUI与HaxeFlixel一起使用吗?

我可以将Underscore的“ where”与“ or”一起使用吗?

可以将loadImage()与JavaScript Promise一起使用吗?

可以将ViewComponents与Razor页面一起使用吗?

可以将Bazaar与SonarQube一起使用吗?

我可以将 AutoMapper 与 Blazor 一起使用吗?

可以将AWS CodePipeline与Lightsail一起使用吗?

我可以将 Bootstrap 与 RCloud 一起使用吗?

我可以将 mlDatabasesWithForestsOnOneHost 与副本一起使用吗?

我可以将 `eval` 与 `rolling()` 一起使用吗?

可以将ViewHolder与片段一起使用吗?