본문 바로가기
Python Object-oriented Programming

enum 기타 기능

by 자동매매 2023. 4. 7.

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

 

'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

댓글