IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Aggiungi un attributo di classe _MAX_DAYS che 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 restituisca True se gli attributi day e month sono minori o uguali ai rispettivi valori massimi, e False altrimenti. 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())
Modifica ed esegui il codice