enum member를 str화
작업 방법
1. enum base class에 __repr__, __str__메서드를 반환값이 self.name으로 overriding한다.
from enum import Enum, auto
class StrEnum(str, Enum):
def _generate_next_value_(name, start, count, last_values):
return name
def __repr__(self):
return self.name
def __str__(self):
return self.name
2. 1에서 생성한 열거형 클래스를 멤버를 추가하여 상속 생성한다.
class Language(StrEnum):
HTML = auto()
CSS = auto()
JS = auto()
output:
print(Language.HTML == 'HTML') # True
print(isinstance(Language.HTML, str)) # True
상기에서 보듯이 멤버의 type이 str임을 확인할 수 있다.
enum의 일반 class처럼 사용하기
from enum import Enum
class Language(Enum):
HTML = ("HTML", "Hypertext Markup Language")
CSS = ("CSS", "Cascading Style Sheets")
JS = ("JS", "JavaScript")
def __init__(self, title, description):
self.title = title
self.description = description
@classmethod
def get_most_popular(cls):
return cls.JS
def lower_title(self):
return self.title.lower()
print([ Language.HTML.value,
Language.HTML.title,
Language.HTML.description,
Language.get_most_popular(),
Language.CSS.lower_title()
])
output:
[('HTML', 'Hypertext Markup Language'), 'HTML', 'Hypertext Markup Language', <Language.JS: ('JS', 'JavaScript')>, 'css']
공식 문서
https://docs.python.org/3/library/enum.html
'Python Object-oriented Programming' 카테고리의 다른 글
Exception Handling (0) | 2023.04.07 |
---|---|
Exceptions (0) | 2023.04.07 |
Data vs. Non-data Descriptors (0) | 2023.04.04 |
descriptors (0) | 2023.04.04 |
Multiple inheritance (0) | 2023.04.04 |
댓글