from dataclasses import dataclass
from enum import Enum
class TestEnum(Enum):
_ignore_ = ["TestData"]
@dataclass
class TestData:
title: str
exclude: str
def dict(self):
return {k: v for k, v in self.__dict__.items() if k != "exclude"}
A = TestData(title="hello", exclude="world")
B = TestData(title="hello2", exclude="world2")
c = TestEnum.A.value
print(c.dict())
print(list(TestEnum))
이번에 처음 dataclass를 써봤는데 좀 어색하네요. dataclasses는 파이썬 3.7부터 추가된 모듈입니다.
enum의 Value로 뭔가 여러 정보가 들어가야 하는 상황이었는데, 처음엔 그냥 dict로 때려 넣었다가 리뷰 받고 이런식으로 바꿔봤습니다
이때 list(TestEnum) 이런식으로 리스트를 만들면 데이터클래스가 포함되는데, 이걸 방지하려면 _ignore_에 dataclass의 이름을 적어주시면 되겠습니다.
아니면 dataclass를 Enum 바깥으로 빼는 것도 하나의 방법이겠습니다.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Django] BinaryField로부터 파일을 직접 서비스하면 안되는 이유 (0) | 2021.01.16 |
---|---|
[Python] dict를 복사하면서 특정 필드를 빼고 복사하는 법 (0) | 2021.01.13 |
[Django] nullable 필드를 기본값 없는 non-nullable 필드로 변경할 때 유의사항 (0) | 2021.01.07 |
[Django] 마이그레이션할 때 Fixed DateTime Warning 해결방법 (0) | 2021.01.07 |
[Django] "value too long for type character varying" (0) | 2021.01.05 |