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

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.