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
Instructions
- Ajoutez un attribut de classe
_MAX_DAYSqui 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 renvoieTruesi les attributsdayetmonthsont inférieurs ou égaux aux valeurs maximales correspondantes, etFalsesinon. 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())