開始使用免費開始

使用內部屬性

在這個練習中,你會回到第 2 章的 BetterDate 類別。

你決定新增一個用來檢查日期是否有效的方法,但你不想把它做為 BetterDate 的公開介面的一部分。

BetterDate 類別已在程式碼面板中提供。

本練習屬於課程

Python 物件導向程式設計

檢視課程

練習說明

  • 新增一個「類別屬性」_MAX_DAYS,用來儲存一個月的最大天數 31
  • 再新增另一個「類別屬性」,用來儲存一年中的最大月份數 12。請「使用合適的命名慣例」來表示這是一個內部屬性。
  • 新增一個 _is_valid() 方法:當 daymonth 屬性分別小於或等於對應的最大值時回傳 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())
編輯並執行程式碼