35.5 연습문제: 날짜 클래스 만들기
다음 소스 코드에서 Date 클래스를 완성하세요. is_date_valid는 문자열이 올바른 날짜인지 검사하는 메서드입니다. 날짜에서 월은 12월까지 일은 31일까지 있어야 합니다.
practice_class_static_class_method.py
class Date: ... if Date.is_date_valid('2000-10-31'): print('올바른 날짜 형식입니다.') else: print('잘못된 날짜 형식입니다.')
실행 결과
올바른 날짜 형식입니다.
정답
@staticmethod def is_date_valid(date_string): year, month, day = map(int, date_string.split('-')) return month <= 12 and day <= 31
해설
is_date_valid 메서드는 Date.is_date_valid처럼 호출하고 있지만, 문자열이 올바른 날짜인지 검사만 하면 되고, 클래스에 접근할 필요는 없습니다. 그러므로 정적 메서드로 만듭니다. 먼저 메서드 위에 @staticmethod를 붙여준 뒤 첫 번째 매개변수로 날짜 문자열 date_string을 지정합니다. 메서드 안에서는 year, month, day = map(int, date_string.split('-'))와 같이 '-'로 문자열을 분리한 뒤 int로 변환해서 각 변수에 넣어줍니다. 그다음에는 return month <= 12 and day <= 31과 같이 월이 12 이하이면서 일이 31일 이하인지 검사하고 결과를 반환하도록 만들면 됩니다. 즉, 월, 일 모두 만족하면 True가 반환되고 하나라도 만족하지 않으면 False가 반환됩니다.