使用內部屬性
在這個練習中,你會回到第 2 章的 BetterDate 類別。
你決定新增一個用來檢查日期是否有效的方法,但你不想把它做為 BetterDate 的公開介面的一部分。
BetterDate 類別已在程式碼面板中提供。
本練習屬於課程
Python 物件導向程式設計
練習說明
- 新增一個「類別屬性」
_MAX_DAYS,用來儲存一個月的最大天數31。 - 再新增另一個「類別屬性」,用來儲存一年中的最大月份數
12。請「使用合適的命名慣例」來表示這是一個內部屬性。 - 新增一個
_is_valid()方法:當day和month屬性分別小於或等於對應的最大值時回傳True,否則回傳False。請務必以類別屬性的「名稱」來參照它們!
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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())