[python] 파이썬 workalendar를 사용하여 특정 법정 공휴일 추가하기

파이썬의 workalendar 패키지를 사용하면 다양한 국가의 법정 공휴일을 쉽게 처리할 수 있습니다. 그러나 기본으로 제공되는 공휴일만으로는 충분하지 않을 수 있습니다. 따라서 workalendar를 사용하여 특정 법정 공휴일을 추가하는 방법에 대해 알아보겠습니다.

1. workalendar 설치하기

workalendar 패키지를 사용하기 위해 먼저 해당 패키지를 설치해야 합니다. 다음 명령을 사용하여 workalendar 패키지를 설치할 수 있습니다:

pip install workalendar

2. 특정 법정 공휴일 추가하기

workalendar는 각 국가별로 서브클래스를 가지고 있으며, 각 서브클래스는 해당 국가의 법정 공휴일을 처리합니다. 따라서 우리는 해당 국가의 서브클래스를 확장하여 새로운 공휴일을 추가할 수 있습니다.

예를 들어, 한국의 SouthKorea 클래스를 확장해서 설날이 추가된 클래스를 만들어 보겠습니다.

from workalendar.asia import SouthKorea

class SouthKoreaWithSeollal(SouthKorea):
    def get_fixed_holidays(self, year):
        # `get_fixed_holidays` 메서드를 오버라이드하여 새로운 공휴일을 추가합니다.
        holidays = super().get_fixed_holidays(year)
        holidays.append((self.get_lunar_n_year(year), "Seollal", date(year, 1, 1)))
        return holidays

위의 코드는 SouthKoreaWithSeollal 클래스를 정의하는 예제입니다. get_fixed_holidays 메서드를 오버라이드하여 설날을 추가하였습니다.

3. 새로운 공휴일 사용하기

새로운 공휴일이 포함된 국가 서브클래스를 사용하는 것은 기본 workalendar와 동일합니다. 다음은 SouthKoreaWithSeollal 클래스를 사용하여 특정 날짜가 공휴일인지 확인하는 예제입니다:

from datetime import date
from SouthKoreaWithSeollal import SouthKoreaWithSeollal

cal = SouthKoreaWithSeollal()
is_holiday = cal.is_working_day(date(2022, 2, 1))  # 2022년 2월 1일
if is_holiday:
    print("이 날은 공휴일입니다.")
else:
    print("이 날은 공휴일이 아닙니다.")

위의 예제에서 is_working_day 메서드를 사용하여 특정 날짜가 공휴일인지 확인할 수 있습니다.

추가적으로, SouthKoreaWithSeollal 클래스를 다른 파일로 분리하고 SouthKorea를 상속받는 방법도 있습니다. 이렇게 하면 코드의 가독성을 높일 수 있습니다.

결론

workalendar를 사용하면 기본으로 제공되는 법정 공휴일 외에도 특정한 공휴일을 쉽게 추가할 수 있습니다. 위의 예제를 참고하여 원하는 국가의 공휴일을 처리하는 데 사용해 보세요.

참고 자료