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
Oefeninstructies
- Voeg een klasse-attribuut
_MAX_DAYStoe 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 dieTrueretourneert als de attributendayenmonthkleiner dan of gelijk aan de overeenkomstige maximumwaarden zijn, en andersFalse. 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())