簡體   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