Bonjour à tous,
Je m'initie à l'utilisation de classes en python, et j'en suis aux Propriétés.
Voici ma classe :
Voici le Main qui l'appelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 class Personne: objets_crees = 0 def __init__(self, nom, prenom,age): Personne.objets_crees+=1 self.nom = nom self.prenom = prenom self.age = age self._lieu_residence = "Paris" def get_lieu_residence (self): print ("Accès au lieu de résidence : {}".format(self._lieu_residence)) def set_lieu_residence (self, lieu): print ("Modification du lieu de résidence : {}".format(lieu)) self._lieu_residence = lieu lieu_residence = property(get_lieu_residence, set_lieu_residence) def __repr__(self): return ("Classe 'Personne' : {}".format(self.__dict__))
Et voici ce qui s'affiche en console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 from Personne import Personne if __name__ == "__main__": pimousse = Personne("Zerath","Benjamin",26) print pimousse.age print Personne.objets_crees pimousse.lieu_residence #pimousse.set_lieu_residence("Alfortville") pimousse.lieu_residence = "Alfortville" pimousse.lieu_residence print pimousse
Et j'en viens à mon problème : On peut voir que le premier appel à "pimousse.lieu_residence" à la ligne 8 du Main réagit correctement en appelant la propriété que j'ai donnée, et donc appel le get. Pourtant à mon second appel, quand je cherche à appeler le set (ligne 11), la propriété est ignorée, et l'attribut "lieu_residence" apparaît, faisaint ainsi perdre la propriété, et l'utilité du getter/setter.26
1
Accès au lieu de résidence : Paris
Classe 'Personne' : {'lieu_residence': 'Alfortville', 'nom': 'Zerath', 'age': 26, '_lieu_residence': 'Paris', 'prenom': 'Benjamin'}
J'ai sûrement mal fait quelque chose, mais quoi ?
Note : si j'appelle pimousse.set_lieu_residence("Alfortville"), je n'ai aucun souci.
Merci d'avance.
Partager