python - 将列表理解分配给枚举值

标签 python enums pycharm list-comprehension

在为 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

打印 enter image description here

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

print(foo.n1024) # input
foo.n1024; #ouptut

关于python - 将列表理解分配给枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73276219/

相关文章:

python - 在文本文件中搜索字母 Python

python - 导入错误 : cannot import name wraps on Mac

postgresql - 在 mac os 中找不到 PostGIS 扩展(安装在不同的目录中)和 $libdir/postgis-2.3

python - 在 MongoEngine 查询中获取引用对象的数据,而不仅仅是 id

python - 如何在 Python 中将 CIDR 前缀转换为点分四组网络掩码?

python - 如何使用 matplotlib 和 SVM 算法向图形(数据集)添加边界?

C++ 枚举问题和 g++ 中可能的循环依赖

python - 自动将枚举成员的值设置为其名称

海湾合作委员会错误: [enum] field declared as a function

python - 如何在 PyCharm 中更改 Python 的函数调用文本颜色?