Propriété d'attribut

Signaler
-
 trifou -
Bonjour,

j'essayais de créer une propriété <setter>

voice mon code

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))

#-------------------

J'aimerai savoir pourquoi

1 réponse

Salut à tous, c'est OK maintenant

je sais ce qui se passait mais j'ai juste redémaré Spyder et relancé ca marche comme je voulais
Une chose à modifier.

Que se passe-t-il si on instancie la classe avec un age incorrect ?

h1 = Humain("Winnie", -1) 


Bah rien, pas d'erreur ^^