在为一个AWS cdk项目准备一些枚举模型时,我想知道为什么PyCharm在为枚举值分配如下列表理解时会有问题.

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

皮查姆告诉我:Expected type 'int', got 'foo' instead.我不太理解这里的问题,因为代码实际上运行得很好,并产生了预期的结果,即["512", "1024", "2048"].

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

这是不是注定不是这样分配的,还是我做错了什么?

编辑: 需要说明的是:PyCharm TypeChecker将str(v * 1024)中的v标记为警告(黄线,而不是红色).运行代码没有任何问题!

EDIT2: 我特别希望将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 enter image description here

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

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

Python相关问答推荐

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

Python中绕y轴曲线的旋转

从spaCy的句子中提取日期

所有列的滚动标准差,忽略NaN

迭代嵌套字典的值

dask无groupby(ddf. agg([min,max])?''''

pandas fill和bfill基于另一列中的条件

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';

Python日志(log)库如何有效地获取lineno和funcName?

Polars表达式无法访问中间列创建表达式

我怎么才能用拉夫分拣呢?

具有不匹配列的2D到3D广播

如何将列表从a迭代到z-以抓取数据并将其转换为DataFrame?

Match-Case构造中的对象可调用性测试

Numpy`astype(Int)`给出`np.int64`而不是`int`-怎么办?

将参数从另一个python脚本中传递给main(argv

如何将ManyToManyfield用于Self类

在行数据为向量的DataFrame上计算逐行更改

将COLUMN BY GROUP中的值连接为列表,并将其赋值给PANAS数据框中的变量

如果init被重载,如何输入提示一个基于init的函数的返回类型