[英]python how to get name of the enum
我有一個這樣的枚舉
class testEnum(Enum):
Code_1 = "successful response"
Code_2 = "failure response"
然后我有一個方法,它將枚舉鍵名稱Code_1
和枚舉鍵值successful response
作為輸入。
如果我發送testEnum.Code_1
則解析為successful response
而不是Code_1
。
我在網上查看了一些建議使用testEnum.Code_1.name
文檔,但這會引發錯誤,指出枚舉項不存在“名稱”。
有誰知道如何獲取枚舉鍵的名稱?
我懷疑發生的事情是您使用的是過時的名為enum 的pip-installable 庫。 如果你這樣做了,你會得到類似的東西
>>> from enum import Enum
>>> class testEnum(Enum):
... Code_1 = "successful response"
... Code_2 = "failure response"
...
>>> testEnum.Code_1
'successful response'
>>> testEnum.Code_1.name
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'name'
而使用“真正的”枚舉(如果您使用的是現代 Python,則使用標准庫中的enum
,或者如果您不使用,則使用enum34
backport ),您會看到
>>> from enum import Enum
>>> class testEnum(Enum):
... Code_1 = "successful response"
... Code_2 = "failure response"
...
>>> testEnum.Code_1
<testEnum.Code_1: 'successful response'>
>>> testEnum.Code_1.name
'Code_1'
您可以通過鍵入help(enum)
並查看您是否看到“NAME / enum / MODULE REFERENCE / https://docs.python.org/3.6/library/enum ”(如您所見)或只是“NAME / enum - Python 中強大的枚舉類型支持”,如果您使用的是較舊的。
您可以使用對象附帶的__dict__
開始調查。 有趣的閱讀是發現
print(testEnum.__dict__)
在該 dict 中,您將看到一個良好的開端,您可以使用以下內容進行測試:
print(testEnum._member_names_)
這確實會產生
['Code_1', 'Code_2']
dir(testEnum) 會給你字典鍵。
例如
dir(testEnum)
返回:
['Code_1'、'Code_2'、' class '、' delattr '、' dict '、' dir '、' doc '、' eq '、' format '、' ge '、' getattribute '、' gt '、' hash '、' init '、' init_subclass '、' le '、' lt '、' module '、' ne '、' new '、' reduce '、' reduce_ex '、' repr '、' setattr '、' sizeof ' , ' str ', ' subclasshook ', ' weakref ']
在python3.9中可以使用:
testEnum.__members__
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.