파이썬의 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
에서 휴일 정보를 사용자 정의하는 방법에 대해 알아보았습니다. 이를 활용하여 원하는 휴일 정보를 적용할 수 있습니다.