Python Object-oriented Programming
enum 기타 기능
자동매매
2023. 4. 7. 07:10
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
enum — Support for enumerations
Source code: Lib/enum.py Important: This page contains the API reference information. For tutorial information and discussion of more advanced topics, see Basic Tutorial, Advanced Tutorial, Enum Co...
docs.python.org