1. 학습
  2. /
  3. 강의
  4. /
  5. Python의 객체 지향 프로그래밍

Connected

연습 문제

대체 생성자

Python에서는 @classmethod 데코레이터와 특별한 첫 번째 인수 cls를 사용해 클래스 메서드도 정의할 수 있어요. 클래스 메서드의 주요 목적은 __init__()과 동일한 코드를 쓰지 않으면서도, 해당 클래스의 인스턴스를 반환하는 메서드를 정의하는 데 있습니다.

예를 들어 시계열 패키지를 개발하면서 날짜를 다루기 위한 자체 클래스 BetterDate를 만들고자 한다고 해봅시다. 이 클래스의 속성은 year, month, day가 됩니다. 연도, 월, 일을 직접 값으로 받아 BetterDate 객체를 생성하는 생성자도 필요하지만, 2020-04-30처럼 문자열로부터 BetterDate 객체를 생성하는 기능도 원하신다고 합시다.

다음 함수들이 도움이 될 수 있어요:

  • .split("-") 메서드는 문자열을 "-" 기준으로 분할해 배열을 만듭니다. 예: "2020-04-30".split("-")는 ["2020", "04", "30"]을 반환해요.
  • int()는 문자열을 숫자로 변환합니다. 예: int("2019")는 2019입니다.

지침 1/2

undefined XP
    1
    2

클래스 메서드 from_str()을(를) 추가하세요. 이 메서드는 다음을 수행합니다:

  • 형식이 'YYYY-MM-DD'인 문자열 datestr을(를) 입력으로 받고,
  • datestr을 분할한 뒤 각 부분을 정수로 변환하며,
  • datestr에서 추출한 값으로 속성이 설정된 클래스 인스턴스를 반환합니다.