2017/1/19
详见代码, Python中, 是否有「所有实例共享的值」这种东西?
定义类
In [1]: class C(object):
...: CLASS_VALUE = 1
...:
In [2]: c1 = C()
In [3]: c2 = C()
In [4]: c1.CLASS_VALUE, c2.CLASS_VALUE
Out[4]: (1, 1)
In [5]: c2.CLASS_VALUE = 2
In [6]: c1.CLASS_VALUE, c2.CLASS_VALUE
Out[6]: (1, 2)
产品版本:Python2.7.x
操作系统: Linux
Lorsque le sujet a attribué une valeur via c2.CLASS_VALUE = 2, il a en fait ajouté dynamiquement l'attribut d'instance CLASS_VALUE à l'objet d'instance c2
Ainsi, lors de l'impression de c2.CLASS_VALUE, l'attribut d'instance qui vient d'être créé dynamiquement sera accessible. Vous pouvez voir
en imprimant __dict__ mais l'attribut de classe n'a pas changé, que ce soit c1.__class__.CLASS_VALUE ou c2.__class__.CLASS_VALUE, c'est pareil. Si vous souhaitez modifier la valeur d'un attribut de classe, vous pouvez la modifier via la classe C.CLASS_VALUE = value
Python3
__class__
Vous pouvez utiliser une classe qui assiste le modèle singleton
Ensuite, toutes les instances Myclass partagent un attr, ce qui aura un effet similaire.
Les propriétés d'une classe sont partagées par toutes les instances de la classe
Lorsqu'une instance de classe modifie un attribut de classe, une "copie en écriture" se produit