Problème de définition d'une Propriété
Bonjour à tous,
Je m'initie à l'utilisation de classes en python, et j'en suis aux Propriétés.
Voici ma classe :
Code:
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__)) |
Voici le Main qui l'appelle :
Code:
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 voici ce qui s'affiche en console :
Citation:
26
1
Accès au lieu de résidence : Paris
Classe 'Personne' : {'lieu_residence': 'Alfortville', 'nom': 'Zerath', 'age': 26, '_lieu_residence': 'Paris', 'prenom': 'Benjamin'}
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.
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.