class Humain:
"""
Classe qui définit un humain
"""
def __init__(self, a_nom, a_age):
print("Création d'un humain...")
self.nom = a_nom
# l'attribut "_age" est précédé d'un underscore signalant qu'elle sera doté d'une propriété
self._age = a_age
# Définition de la propriété _getage
def _getage(self): # exécuter la ligne print(h1.a_age) pour voir ce qui se passe avec cette propriété
return self._age # un return pour recupérer l'attribut _age
# Définition de la propriété _setage
def _setage(self, nouvel_age):
# Mise en oeuvre du control de l'âge
if nouvel_age < 0:
self._age = 0
print("La valeur {} n'est pas indiquée, elle a été ramenée à 0".format(self._age))
else:
self._age = nouvel_age
print("La valeur {} est appropriée, elle a été considérée comme nouvel âge".format(self._age))
# Definition de propriété de l'attribut "a_age".
a_age = property(_getage, _setage)
# programme principale
h1 = Humain("Winnie", 34)
h1.a_age = -30
print(h1.a_age)
h1.a_age = 25
print(h1.a_age)
# ----------------------------------------
Quand j'exécute le code:
h1.a_age = -30
j'obtient bien dans la console Spyder ce qui suit:
h1.a_age = -30
La valeur 0 n'est pas indiquée, elle a été ramenée à 0
# ---------------------------------
Mais quand j'exécute le code
h1.a_age = 25
j'ai:
h1.a_age = 25 # Mais le print ne s'affiche pas dans la console
je parle en fait du print de la section du bout de code ci-dessus
#-------------------
else:
self._age = nouvel_age
print("La valeur {} est appropriée, elle a été considérée comme nouvel âge".format(self._age))
12 févr. 2020 à 13:05
Que se passe-t-il si on instancie la classe avec un age incorrect ?
Bah rien, pas d'erreur ^^