始める無料で始める

内部属性を使う

この演習では、第2章の BetterDate クラスに戻ります。

日付の妥当性をチェックするメソッドを追加しますが、これは BetterDate の公開インターフェースには含めたくありません。

BetterDate クラスはスクリプトペインで利用できます。

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

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

コースを見る

演習の手順

  • 月の日数の最大値 31 を保持する クラス属性 _MAX_DAYS を追加します。
  • 1年の月数の最大値 12 を保持する、もう1つの クラス属性 を追加します。内部属性であることがわかる適切な命名規則を使ってください。
  • daymonth 属性がそれぞれの最大値以下なら True、そうでなければ False を返す _is_valid() メソッドを追加します。クラス属性は必ずそのクラス属性名で参照してください!

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

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

# Add class attributes for max number of days and months
class BetterDate:
    ____
    
    def __init__(self, year, month, day):
        self.year, self.month, self.day = year, month, day
        
    @classmethod
    def from_str(cls, datestr):
        year, month, day = map(int, datestr.split("-"))
        return cls(year, month, day)
    
    # Add _is_valid() checking day and month values
    ____
    
bd1 = BetterDate(2020, 4, 30)
print(bd1._is_valid())

bd2 = BetterDate(2020, 6, 45)
print(bd2._is_valid())
コードを編集して実行