始める無料で始める

BetterDate クラスを作る

時系列パッケージを開発しており、日付を扱うための独自クラス BetterDate を定義したいとします。

このクラスの属性は yearmonthday です。年・月・日を受け取って BetterDate オブジェクトを生成するコンストラクタに加えて、2021-04-30 のような文字列からも BetterDate オブジェクトを作成できるようにしたいです。

この演習はコースの一部です

Pythonによるオブジェクト指向プログラミング入門

コースを見る

演習の手順

  • from_str() というクラスメソッドを定義し、必須の特別な引数と、datestr という引数を受け取るようにします。
  • datestr をハイフン "-" で分割し、結果を変数 parts に保存します。
  • キーワードを使って __init__() も呼び出されるようにしつつ、yearmonthday の順で返します。
  • クラスの .from_str() メソッドを使って、文字列 "2024-12-25" を与え、変数 xmas を作成します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

class BetterDate:
  def __init__(self, year, month, day):
    self.year, self.month, self.day = year, month, day
    
  # Define a class method from_str
  ____
  ____
    # Split the string at "-"
    parts = datestr.____("____")
    year, month, day = int(parts[0]), int(parts[1]), int(parts[2])
    # Return the class instance
    ____ ____(____, ____, ____)

# Create the xmas object      
xmas = ____.____("____")   
print(xmas.year)
print(xmas.month)
print(xmas.day)
コードを編集して実行