Uso di attributi interni
In questo esercizio tornerai alla classe BetterDate del Capitolo 2.
Hai deciso di aggiungere un metodo che verifichi la validità della data, ma non vuoi che faccia parte dell’interfaccia pubblica di BetterDate.
La classe BetterDate è disponibile nel riquadro dello script.
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti in Python
Istruzioni dell'esercizio
- Aggiungi un attributo di classe
_MAX_DAYSche memorizzi il numero massimo di giorni in un mese:31. - Aggiungi un altro attributo di classe che memorizzi il numero massimo di mesi in un anno:
12. Usa la convenzione di naming appropriata per indicare che si tratta di un attributo interno. - Aggiungi un metodo
_is_valid()che restituiscaTruese gli attributidayemonthsono minori o uguali ai rispettivi valori massimi, eFalsealtrimenti. Assicurati di fare riferimento agli attributi di classe per nome!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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())