Aan de slagGa gratis aan de slag

Interne attributen gebruiken

In deze oefening ga je terug naar de klasse BetterDate uit Hoofdstuk 2.

Je besluit een methode toe te voegen die de geldigheid van de datum controleert, maar je wilt deze geen onderdeel maken van de openbare interface van BetterDate.

De klasse BetterDate is beschikbaar in het scriptpaneel.

Deze oefening maakt deel uit van de cursus

Objectgeoriënteerd programmeren in Python

Cursus bekijken

Oefeninstructies

  • Voeg een klasse-attribuut _MAX_DAYS toe met het maximale aantal dagen in een maand - 31.
  • Voeg nog een klasse-attribuut toe met het maximale aantal maanden in een jaar - 12. Gebruik de juiste naamgevingsconventie om aan te geven dat dit een intern attribuut is.
  • Voeg een methode _is_valid() toe die True retourneert als de attributen day en month kleiner dan of gelijk aan de overeenkomstige maximumwaarden zijn, en anders False. Zorg ervoor dat je naar de klasse-attributen verwijst via hun namen!

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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())
Code bewerken en uitvoeren