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é de la date, sans toutefois l'exposer dans l'interface publique de BetterDate.
La classe BetterDate est disponible dans le panneau de script.
Cette activité fait partie du cours
Programmation orientée objet en Python
Instructions de l’exercice
- 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. Assurez-vous de faire référence aux attributs de classe par leur nom !
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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())