Enum
은 단지 class
이므로 대체 생성자는 어떨까요? 가장 노골적입니다.
class ItemType(Enum):
ITEM1 = ('Desc1', AnotherEnum.ONE)
ITEM2 = ('Desc2', AnotherEnum.TWO)
@classmethod
def from_description(cls, description):
for item in cls:
if item.value[0] == description:
return item
raise ValueError("%r is not a valid %s description" % (description, cls.__name__))
다음은 ItemType.from_description('Desc1')
입니다. 당신이 ItemType('Desc1')
그냥 파이썬 3.6로 작업 할 경우
또는, _missing_
을 구현할 수 있습니다
class ItemType(Enum):
ITEM1 = ('Desc1', AnotherEnum.ONE)
ITEM2 = ('Desc2', AnotherEnum.TWO)
@classmethod
def _missing_(cls, value):
for item in cls:
if item.value[0] == value:
return item
return super()._missing_(value)
내가 설명이 찾는을 수행합니다 여부를 수있는 자연 것인지에 내 선택의 기초 것
. JSON 변환과 관련하여 오히려 대체 생성자를 사용하십시오. 그렇지 않으면,이 두 번째 옵션으로 가십시오. 그러나 그 경우 값이 관련 상점 AnotherEnum
을 저장할 최적의 장소인지 궁금합니다. 어쩌면 대신 to_another_enum()
메서드가 있어야하고 AnotherEnum
에 대체 생성자가 있어야합니다 ... 아니면 둘 다 ...?
사전을 사용하십시오. – kindall
'class' 또는'Enum'의 값 대신에? – KDecker
또 다른 열거 형'Desc'를 사용하면'ItemType (Desc ('Desc1'))' – smac89