Le fonctionnement de "property()"
Bonjour à tous,
Je débute dans le langage Python.
J'ai lu dans un des cours sur Python, qu'il n'y a pas d'attributs privé ou public, tout est public mais on peut quand même contrôler par exemple la modification d'un attribut à l'aide d'une propriété qui redirigera vers une méthode que l'on peut construire.
J'ai écrit cet exemple sur le modèle donné :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #/usr/bin/python
#-*-coding:Utf-8-*
class Danse8temps:
"""Classe d'essai définissant :
- la musique
- le temps qui devrait rester à 8 même si on essaie de le modifier à l'extérieur de la classe"""
def __init__(self,musique):
self.musique=musique
self._temps=8
def _get_temps(self):
print "Accesseur"
print "Musique à {} temps.".format(self._temps)
return self._temps
def _set_temps(self,nouveau_temps):
print "Mutateur"
print "Impossible de changer {} à {} temps.".format(self.musique,nouveau_temps)
temps=property(_get_temps,_set_temps)
lindy=Danse8temps("swing")
print lindy.musique
r=lindy.temps
print r
lindy.temps=6
print lindy.temps |
Quand je lance ce script, voici ce que j'obtiens :
Citation:
swing
Accesseur
Musique à 8 temps.
8
6
Autrement dit, il y a bien une redirection pour obtenir l'attribut mais quand on le modifie...ben ça ne passe pas par la méthode en question ! Et ça modifie l'attribut...
Quelqu'un peut-il me dire où est mon erreur ? Dans le code ? Dans la compréhension de property ?
Merci beaucoup.
suite du message sur property...
:oops: ...je suis débutant aussi sur le forum et je viens de me rendre compte que l'indentation a disparue dans mon message, ce qui rend la lecture difficile.
Désolé.