下面是代碼:Python混合枚舉作爲字典鍵:類型如何轉換?
from enum import Enum
class EFoo(str, Enum):
A = 'e1'
B = 'e2'
print(EFoo.A)
d = {
EFoo.A : 'eA',
EFoo.B : 'eB'
}
first_key = list(d.keys())[0]
first_key_type = type(first_key)
print("Keys: " + str(d.keys()))
print("Type of first key: " + str(first_key_type))
print("d[EFoo.A] = '" + d[EFoo.A] + "'")
print("d['e1'] = '" + d['e1'] + "'")
這裏是輸出(Python的3.5)
EFoo.A
Keys: dict_keys([<EFoo.A: 'e1'>, <EFoo.B: 'e2'>])
Type of first key: <enum 'EFoo'>
d[EFoo.A] = 'eA'
d['e1'] = 'eA'
現在詞典鍵的類型是<enum 'EFoo'>
。
所以我不明白爲什麼代碼d['e1'] = 'eA'
,它通過一個字符串鍵訪問字典的作品。
字符串「e1」是否轉換爲「EFoo」實例? Python會做一些反向查找來找到正確的枚舉值來轉換爲?
此外,如果您刪除str
作爲類的父,使類的聲明看起來像class EFoo(Enum):
,上面的代碼片斷不工作了 是什麼從str
繼承正好在這種情況下怎麼辦?