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