Echa un vistazo a este question.
En pocas palabras, la clase y la instancia de clase tienen diferentes espacios de nombres (En realidad, esto no es muy correcta, porque ejemplo de espacio de nombres coloca un poco en la parte superior de la clase espacio de nombres para que en caso si tiene un atributo de clase y un atributo de instancia con el mismo nombre, se accederá a la instancia 'a través de inst.attr
, de otra manera - clase'). Por lo tanto, cuando se hace
object1.variable = 1
no cambia realmente variable de clase (que a menudo se llama campo estático en otros idiomas), que acaba de enlaza un nuevo campo llamadovariable
a la instancia de la clase object1
.
Lo que probablemente quiera hacer es cambiar la variable de clase, no la instancia uno. Se podría hacer de esta manera:
Sample.variable = 1
o como esto:
object1.__class__.variable = 1
posible duplicado de [pitón atributo de clase] (http://stackoverflow.com/questions/2923579/python-class-attribute) –
Para mi entendimiento im pedir esto sólo: ¿Cuál fue el pensamiento detrás de la pregunta? ¿No es obvio que object1 y object2 son instancias distintas de la misma clase? –
Creo que él cree que 'variable' es estático porque está definido fuera de una función, o algo así. No estoy seguro de verdad :) Todavía es una pregunta razonable de alguna manera. – hochl