파이썬 열거 형 클래스에서 모든 값을 얻는 방법은 무엇입니까?
Enum4 라이브러리를 사용하여 다음과 같이 열거 형 클래스를 만듭니다.
class Color(Enum):
RED = 1
BLUE = 2
[1, 2]
어딘가에 목록 으로 인쇄하고 싶습니다 . 이것을 어떻게 할 수 있습니까?
IntEnum 을 사용할 수 있습니다 .
from enum import IntEnum
class Color(IntEnum):
RED = 1
BLUE = 2
print(int(Color.RED)) # prints 1
int 목록을 얻으려면 :
enum_list = list(map(int, Color))
print(enum_list) # prints [1, 2]
다음을 수행 할 수 있습니다.
[e.value for e in Color]
어떤 유형의 값 으로든 Enum을 사용하려면 다음을 시도하십시오.
몇 가지 개선 사항으로 업데이트되었습니다 ... 팁으로 @Jeff에게 감사드립니다!
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 'GREEN'
BLUE = ('blue', '#0000ff')
@staticmethod
def list():
return list(map(lambda c: c.value, Color))
print(Color.list())
결과로:
[1, 'GREEN', ('blue', '#0000ff')]
그래서는 Enum
이 __members__
DICT을. @ozgur가 제안한 솔루션은 정말 최고이지만 더 많은 작업을 통해 동일한 작업을 수행 할 수 있습니다.
[color.value for color_name, color in Color.__members__.items()]
__members__
당신이 어떤 미친 상황에서 ... 동적에 물건을 삽입하기를 원한다면 사전에 유용하게 사용할 수 있습니다.
[편집] 분명히 __members__
사전이 아니라지도 프록시입니다. 즉, 항목을 쉽게 추가 할 수 없습니다.
그러나 당신은 ..과 같은 이상한 일 MyEnum.__dict__['_member_map_']['new_key'] = 'new_value'
을 할 수 있고, MyEnum.new_key
.... 과 같은 새로운 키를 사용할 수 있습니다 . 그러나 이것은 단지 구현 세부 사항 일 뿐이며 함께 연주해서는 안됩니다. 흑 마법은 엄청난 유지 비용으로 지불됩니다.
class enum.Enum
는 모든 열거 요구 사항을 해결하는 클래스이므로 상속하고 자신의 필드를 추가하기 만하면됩니다. 그 이후부터는 속성을 호출하기 만하면됩니다. name
& value
:
from enum import Enum
class Letter(Enum):
A = 1
B = 2
C = 3
print({i.name: i.value for i in Letter})
# prints {'A': 1, 'B': 2, 'C': 3}
@Jeff의 답변에 classmethod
따라 열거 형에 동일한 코드를 재사용 할 수 있도록 a를 사용하도록 리팩토링했습니다 .
from enum import Enum
class ExtendedEnum(Enum):
@classmethod
def list(cls):
return list(map(lambda c: c.value, cls))
class OperationType(ExtendedEnum):
CREATE = 'CREATE'
STATUS = 'STATUS'
EXPAND = 'EXPAND'
DELETE = 'DELETE'
print(OperationType.list())
생성 :
['CREATE', 'STATUS', 'EXPAND', 'DELETE']
iter () 함수를 사용할 수 있습니다.
from enum import IntEnum
class Color(IntEnum):
RED = 1
BLUE = 2
l=[]
for i in iter(Color):
l.append(i.value)
print(l)
참고URL : https://stackoverflow.com/questions/29503339/how-to-get-all-values-from-python-enum-class
'Programming' 카테고리의 다른 글
Python의 최대 공약수 코드 (0) | 2020.08.19 |
---|---|
findAll Doctrine의 방법을 정렬하는 방법 (0) | 2020.08.19 |
암호 유효성 검사를위한 Regexp Java (0) | 2020.08.19 |
android : 피카소로 원형 이미지 만들기 (0) | 2020.08.19 |
vi 편집기에서 문자열 검색 및 개수 가져 오기 (0) | 2020.08.19 |