1. Learn
  2. /
  3. Courses
  4. /
  5. Python によるオブジェクト指向プログラミング

Connected

Exercise

代替コンストラクタ

Python では、@classmethod デコレータと特別な第1引数 cls を使ってクラスのメソッドも定義できます。クラスメソッドの主な用途は、__init__() と同じコードを使わずに、そのクラスのインスタンスを返すメソッドを定義することです。

たとえば、時系列パッケージを開発していて、日付を扱うための独自クラス BetterDate を作りたいとします。このクラスの属性は year、month、day です。年・月・日を値として受け取り BetterDate オブジェクトを生成するコンストラクタに加えて、2020-04-30 のような文字列からも BetterDate オブジェクトを作れるようにしたいと考えています。

次の関数が役に立つかもしれません。

  • .split("-") メソッドは文字列を "-" で分割して配列にします。例: "2020-04-30".split("-") は ["2020", "04", "30"] を返します。
  • int() は文字列を数値に変換します。例: int("2019") は 2019 です。

Instructions 1/2

undefined XP
    1
    2

クラスメソッド from_str() を追加してください。次を満たします。

  • 形式 'YYYY-MM-DD' の文字列 datestr を受け取る。
  • datestr を分割し、各要素を整数に変換する。
  • datestr から取り出した値で属性が設定された、このクラスのインスタンスを返す。