Portée des variables de classe
Bonjour
Je suis actuellement plongé dans l'excellent livre "Apprendre à programmer avec Python 3" de G.S. A la page "espaces de noms des classes et instances" il est écrit que :
--- Chaque classe possède son espace de noms (contenant les variables de classe), et chaque objet instance possède son espace de noms (contenant les variables d'instance).
--- Les instances peuvent utiliser, mais pas modifier, les variables de classe.
J'ai du mal à comprendre ce dernier point car en exécutant ce script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class Bidon(object):
"""essais de portée des variables"""
var1 = 11
print(Bidon.var1) # Variable de classe ?
obj1 = Bidon()
obj1.var1 = 0 # Variable d'instance ?
print(obj1.var1) # La variable d'instance est modifiée
print(Bidon.var1) # et la variable de classe aussi
obj2 = Bidon() # D'ailleurs les nouveaux objets ne sont plus
print(obj1.var1) # instanciés avec la même valeur de var1 |
... on constate que la variable Bidon.var1 a été modifiée par l'instance obj2.