Utilisation des attributs internes
Dans cet exercice, vous reviendrez à la classe BetterDate
du chapitre 2.
Vous décidez d'ajouter une méthode qui vérifie la validité de la date, mais vous ne voulez pas l'intégrer à l'interface publique de BetterDate
.
La classe BetterDate
est disponible dans le volet de script.
Cet exercice fait partie du cours
Programmation orientée objet en Python
Instructions
- Ajoutez un attribut de classe
_MAX_DAYS
stockant le nombre maximal de jours dans un mois -31
. - Ajoutez un autre attribut de classe stockant le nombre maximal de mois dans une année -
12
. Utilisez la convention d'appellation appropriée pour indiquer qu'il s'agit d'un attribut interne. - Ajoutez une méthode
_is_valid()
qui renvoieTrue
si les attributsday
etmonth
sont inférieurs ou égaux aux valeurs maximales correspondantes, etFalse
dans le cas contraire. Veillez à désigner les attributs de la 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())