[python] 파이썬 workalendar에서 휴일 정보를 사용자 정의하기

파이썬의 workalendar 라이브러리는 다양한 국가의 휴일 정보를 제공합니다. 하지만 때로는 사용자가 직접 휴일 정보를 수정하거나 추가해야 할 때가 있습니다. 이번 포스트에서는 workalendar에서 휴일 정보를 사용자 정의하는 방법에 대해 알아보겠습니다.

1. 사용자 정의 휴일 클래스 만들기

workalendar에서 휴일 정보를 사용자 정의하기 위해서는 Calendar 클래스를 상속받은 새로운 휴일 클래스를 만들어야 합니다. 이 클래스에서는 원하는 휴일을 정의할 수 있습니다. 예를 들어, 한국의 어린이날과 설날을 추가하고 싶다면 다음과 같은 코드를 작성합니다.

from workalendar.core import WesternCalendar, MON, TUE, WED

class MyCalendar(WesternCalendar):
    include_korea_childrens_day = True  # 어린이날 휴일 추가

    def get_koreas_seollal(self, year):
        # 설날 휴일 추가
        return [(self.get_equinox(year), "Seollal")]

    def get_fixed_holidays(self, year):
        # 기본 휴일에서 필요한 휴일 정보 제거
        fixed_holidays = super().get_fixed_holidays(year)
        fixed_holidays = [h for h in fixed_holidays if h[1] != "New year's day"]
        return fixed_holidays

위 코드에서는 include_korea_childrens_day 변수를 True로 설정하여 어린이날을 휴일로 추가하였고, get_koreas_seollal 메서드를 통해 설날을 휴일로 추가하였습니다. 또한, get_fixed_holidays 메서드에서는 기본적으로 정의되어 있는 휴일 중에서 필요한 휴일 정보를 제거하는 예제입니다.

2. 사용자 정의 휴일 클래스 사용하기

사용자 정의한 휴일 클래스를 사용하기 위해서는 해당 클래스의 인스턴스를 생성하고 get_holidays 메서드를 통해 휴일 정보를 얻을 수 있습니다. 예를 들어, 다음과 같이 사용자 정의한 휴일 클래스를 사용하여 2022년의 한국 휴일 정보를 가져오는 코드를 작성할 수 있습니다.

from datetime import date
from mycalendar import MyCalendar

year = 2022

calendar = MyCalendar()
holidays = calendar.get_holidays(year)

for holiday in holidays:
    print(holiday)

위 코드에서는 MyCalendar 클래스의 인스턴스를 생성한 후, get_holidays 메서드를 호출하여 휴일 정보를 얻었습니다. 이렇게 얻은 휴일 정보를 for 루프를 통해 출력하거나 다른 연산에 활용할 수 있습니다.

결론

workalendar 라이브러리를 사용하여 휴일 정보를 쉽게 얻을 수 있지만 때로는 사용자 정의한 휴일 정보가 필요할 수 있습니다. 이번 포스트에서는 workalendar에서 휴일 정보를 사용자 정의하는 방법에 대해 알아보았습니다. 이를 활용하여 원하는 휴일 정보를 적용할 수 있습니다.