เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การใช้งาน internal attribute

ในแบบฝึกหัดนี้ จะกลับมาใช้คลาส BetterDate จากบทที่ 2

เราต้องการเพิ่มเมธอดสำหรับตรวจสอบความถูกต้องของวันที่ แต่ไม่ต้องการให้เมธอดนี้เป็นส่วนหนึ่งของ public interface ของ BetterDate

คลาส BetterDate มีอยู่แล้วในหน้าต่างสคริปต์

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียนโปรแกรมเชิงวัตถุใน Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เพิ่ม class attribute ชื่อ _MAX_DAYS สำหรับเก็บจำนวนวันสูงสุดในหนึ่งเดือน ซึ่งมีค่าเป็น 31
  • เพิ่ม class attribute อีกตัวสำหรับเก็บจำนวนเดือนสูงสุดในหนึ่งปี ซึ่งมีค่าเป็น 12 ใช้รูปแบบการตั้งชื่อที่เหมาะสมเพื่อระบุว่านี่คือ internal attribute
  • เพิ่มเมธอด _is_valid() ที่คืนค่า True หาก attribute day และ month มีค่าน้อยกว่าหรือเท่ากับค่าสูงสุดที่กำหนดไว้ และคืนค่า False ในกรณีอื่น อย่าลืมอ้างอิง class attribute ด้วยชื่อของแต่ละตัว!

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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())
แก้ไขและรันโค้ด