[python] enum-문자열 변환시 enum 값 얻기

다음 열거 형을 정의했습니다.

from enum import Enum


class D(Enum):
    x = 1
    y = 2


print(D.x)

이제 인쇄 된 값은

D.x

대신 enum의 값이 인쇄되기를 원했습니다.

1

이 기능을 달성하기 위해 할 수 있습니까?



답변

열거 형 개체를 인쇄하고 있습니다. .value인쇄하려는 경우 속성을 사용하십시오 .

print(D.x.value)

열거 형 멤버 및 해당 속성에 대한 프로그래밍 방식 액세스 섹션을 참조하십시오 .

열거 형 멤버가 있고 해당 이름 또는 값이 필요한 경우 :

>>>
>>> member = Color.red
>>> member.name
'red'
>>> member.value
1

__str__원하는 모든 것이 사용자 지정 문자열 표현을 제공하는 것이라면 열거 형에 메서드를 추가 할 수 있습니다 .

class D(Enum):
    def __str__(self):
        return str(self.value)

    x = 1
    y = 2

데모:

>>> from enum import Enum
>>> class D(Enum):
...     def __str__(self):
...         return str(self.value)
...     x = 1
...     y = 2
...
>>> D.x
<D.x: 1>
>>> print(D.x)
1


답변

다음을 사용하여 액세스를 구현했습니다.

class D(Enum):
    x = 1
    y = 2

    def __str__(self):
        return '%s' % self.value

이제 나는 할 수 있습니다

print(D.x)1결과 를 얻으려면 .

대신 self.name인쇄하려는 경우 에도 사용할 수 있습니다 .x1


답변

Enum문자열을 사용하여 액세스 할 때이 페이지를 찾았습니다 . 나는 이것이이 특별한 질문에서 묻는 것이 아니라 제목이 그것을 ‘제안’한다는 것을 알고 있습니다.

문자열을 사용하여 Enum을 얻으려면 다음을 수행 할 수 있습니다.

from enum import Enum


class D(Enum):
    x = 1
    y = 2


print(D["x"])  # <D.x: 1>


답변