class C:
count=0
a=C()
b=C()
c=C()
print(a.count)
print(b.count)
print(c.count)
c.count+=10
print(c.count)
print(a.count)
print(b.count)
print(C.count)
C.count+=100
print(a.count)
print(b.count)
print(c.count)
0
0
0
10
0
0
0
100
100
10
为什么后来a.count b.count的值都是100 而c.count的值是10
Les attributs de classe sont équivalents aux variables statiques en Java et appartiennent à des classes.
Parce que vous définissez l'attribut d'instance de c ici c.count+=10.
Donc print(c.count) vaut 10
Parce que c.count+=10 équivaut à ajouter dynamiquement un attribut d'instance à l'objet d'instance c. Lors de l'impression de c.count, l'attribut d'instance sera imprimé à la place de l'attribut de classe
Vous pouvez le regarder étape par étape.
Instanciez d’abord trois objets de classe C.
Imprimez les valeurs de comptage de a, b, c.
Cela implique l'ordre de recherche d'un attribut.
Tout d'abord, vérifiez si l'instance a une valeur de comptage. Si elle ne peut pas être trouvée, elle recherchera le niveau supérieur. Le niveau supérieur de l'instance est la classe. S'il s'avère qu'il y a un nombre dans l'attribut de classe, le nombre ici sera affiché.
c.count += 10
À l'origine, c.count fait référence à C.count, mais maintenant lui attribuer une nouvelle valeur équivaut à l'instance c ayant l'attribut count.
Imprimez les valeurs de comptage de a, b, c, C. À ce stade, l’instance c possède déjà sa propre valeur de comptage.
C.count += 100
Modifiez la valeur de comptage de la classe C. c a sa propre valeur de comptage, et a et b font toujours référence à la valeur de comptage de C.
C’est probablement à ça que ça ressemble.
En une phrase : lorsqu'une instance attribue une valeur à une variable statique d'une classe, elle ajoute en fait dynamiquement des attributs à l'instance. Cela n'aura aucun impact sur les attributs statiques. Lorsque les attributs statiques entrent en conflit avec les attributs de l'instance, cela n'aura aucun impact sur les attributs statiques. l'ordre d'accès à l'instance est La priorité est : instance-》class
https://segmentfault.com/a/11...