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가 반환됩니다.