内部属性を使う
この演習では、第2章の BetterDate クラスに戻ります。
日付の妥当性をチェックするメソッドを追加しますが、これは BetterDate の公開インターフェースには含めたくありません。
BetterDate クラスはスクリプトペインで利用できます。
この演習はコースの一部です
Python によるオブジェクト指向プログラミング
演習の手順
- 月の日数の最大値
31を保持する クラス属性_MAX_DAYSを追加します。 - 1年の月数の最大値
12を保持する、もう1つの クラス属性 を追加します。内部属性であることがわかる適切な命名規則を使ってください。 dayとmonth属性がそれぞれの最大値以下なら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())