CommencerCommencer gratuitement

Utiliser des attributs internes

Dans cet exercice, vous revenez à la classe BetterDate du chapitre 2.

Vous décidez d’ajouter une méthode qui vérifie la validité d’une date, mais vous ne souhaitez pas qu’elle fasse partie de l’interface publique de BetterDate.

La classe BetterDate est disponible dans le panneau de script.

Cet exercice fait partie du cours

Programmation orientée objet en Python

Afficher le cours

Instructions

  • Ajoutez un attribut de classe _MAX_DAYS qui stocke le nombre maximal de jours dans un mois : 31.
  • Ajoutez un autre attribut de classe qui stocke le nombre maximal de mois dans une année : 12. Utilisez la convention de nommage appropriée pour indiquer qu’il s’agit d’un attribut interne.
  • Ajoutez une méthode _is_valid() qui renvoie True si les attributs day et month sont inférieurs ou égaux aux valeurs maximales correspondantes, et False sinon. Veillez à faire référence aux attributs de classe par leur nom !

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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())
Modifier et exécuter le code