King of Stock

Subclassing enum.Enum in python 본문

IT 기술

Subclassing enum.Enum in python

king of stock 2022. 3. 6. 10:03

파이썬에서 열거형 클래스를 상속받아서 직렬화까지 동작하게 하는 간단한 방법

  • 아래 예시는 필자가 개발중인 프로그램의 일부로 문자열을 값으로 가지는 맴버로 사용자 정의 열거형 클래스이다.

    from enum import Enum
    
    class StockStateType(str, Enum):
        """종목 상태 유형
    
        키움 GetMasterStockState(QString) 조회 결과에서 파싱 결과의 열거형이며 증거금은 조회 결과는 제외
    
        상태의 종류에는 거래정지, 관리종목, 감리종목, 투자유의종목, 담보대출, 액면분할, 신용가능
        """
    
        STOP = "거래정지"
        """거래정지"""
        GOVERNMENT = "관리종목"
        """관리종목"""
        SUPERVISION = "감리종목"
        """감리종목"""
        ATTENTION = "투자유의종목"
        """투자유의종목"""
        LOAN = "담보대출"
        """담보대출"""
        SPLIT = "액면분할"
        """액면분할"""
        MARGIN = "신용가능"
        """신용가능"""
    
        def __eq__(self, other: object) -> bool:
            if self.__class__ is other.__class__:
                return self.value == other.value
            if isinstance(other, str):
                return self.value == other
            return False
    
        def __hash__(self):
            return hash((self.name, self.value))
    
        def __str__(self) -> str:
            return self.name
    
        def __repr__(self):
            return self.name
  • 중요한 부분은 상속을 받을때 str 클래스도 같이 상속을 받는 것이 포인트이다.

'IT 기술' 카테고리의 다른 글

리눅스(Debian) 로케일 설정  (0) 2022.10.14
C# EntityFramework 설정  (0) 2021.02.28
VSCode diff 툴  (0) 2020.08.25
[DNS] ubuntu server 18.04 DNS 서버 구성해보기  (0) 2019.12.21
[shell] if문에서 문자열 비교가 안될때  (0) 2019.12.05
Comments