我正在尋找一種基于列舉的方法來回傳每個列舉項后面的陣列。例如,假設我需要為每種型別的目標指定一個范圍,如下所示:
from enum import Enum
class TargetRange(Enum):
T1 = [0, 100]
T2 = [30, 60]
T3 = [50, 150]
現在,我正在使用列舉,如下所示:
target_range = TargetRange.T1
value = 140
# ...
# adjust the value
if(value > target_range[1]):
value = target_range[1]
elif(value < target_range[0]):
value = target_range[0]
# ...
但是,我收到以下錯誤:
型別錯誤:“TargetRange”物件不可下標
我該如何解決?這種列舉的正確用法是什么?
我應該注意到我發現這篇文章回傳了一個字串(而不是一個陣列)。因此,我正在尋找相同的想法來回傳陣列而不是字串。
uj5u.com熱心網友回復:
可以通過三種方式獲得對索引的支持:
使用
.value屬性TargetRange.T1.value繼承自
list以及Enum:class TargetRange(list, Enum):添加
__getitem__方法:class TargetRange(Enum): def __getitem__(self, index): return self._value_[index] T1 = [0, 100] T2 = [30, 60] T3 = [50, 150]
披露:我是Python stdlibEnum、enum34backport和Advanced Enumeration ( aenum) 庫的作者。
uj5u.com熱心網友回復:
Enum和之間的區別StrEnum正是在這一點上。如果列印TargetRange.T1,你會發現列舉項的值沒有回傳。因此,解決此問題的一個簡單解決方案是將代碼的第一行重寫如下:
target_range = TargtetRange.T1.value
#...
這意味著使用.value列舉項的屬性而不是直接使用列舉項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/325849.html
上一篇:在串列中查詢查詢陣列的簡單程式
下一篇:從動態嵌套陣列生成物件的平面陣列
