在为 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
标记为警告(黄线,而不是红色)。运行代码没有问题!
编辑2: 我特别希望创建 this 底部显示的 cpu/内存表作为 python 枚举。
最佳答案
这是一种创建动态枚举的方法
import enum
es = {}
for v in range(1, 3):
es['n' + str(v * 1024)] = int(v * 1024)
foo = enum.Enum('foo', es)
print(list(foo)) # this creates a dynamic enum
您还可以通过以下方式访问它
print(foo.n1024) # input
foo.n1024; #ouptut
关于python - 将列表理解分配给枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73276219/