繁体   English   中英

将列表理解分配给枚举值

[英]Assigning list comprehension to an enum value

在为 aws cdk 项目准备一些枚举和 pydantic 模型时,我想知道为什么 PyCharm 对我将如下所示的列表推导分配给枚举值有问题。

class foo(Enum):
    bar = [str(v * 1024) for v in range(1, 3)]

PyCharm 告诉我:预期类型 'int',取而代之的是 'foo' 我不太明白这里的问题,因为代码实际上运行得很好并吐出了预期的结果,即["512", "1024", "2048"]

是的,我可以将列表构建为普通变量并将其作为枚举值引用,但我喜欢在编码时避免不必要的变量声明。

它只是不打算像这样分配还是我做错了什么?

编辑:澄清:PyCharms TypeChecker 将str(v * 1024)中的v标记为警告(黄线,不是红线)。 运行代码没有问题!

EDIT2:我特别希望创建显示在底部CPU/内存表作为 python 枚举。

这是一种创建动态枚举的方法

import enum
es = {}
for v in range(1, 3):
    es[str(v * 1024)] = int(v * 1024)
foo  = enum.Enum('foo', es)
print(list(foo)) # this creates a dynamic enum

打印在此处输入图像描述

您也可以通过以下方式访问它

foo["1024"];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM