Aquí hay un código muy simple que hice para demostrar el problema que estoy encontrando. Lo que sucede aquí es que estoy creando dos instancias diferentes de la misma clase pero cambiar un atributo de uno cambiará el atributo correspondiente de la otra instancia. No estoy seguro de por qué es esto. ¿Es esto normal en Python o me encuentro con algo completamente desordenado?¿Se han sobrescrito varias instancias de una clase al mismo tiempo? (Python)
class exampleClass(object):
attribute1=0
attribute2="string"
x=exampleClass
x.attribute1=20
x.attribute2="Foo"
y=exampleClass
y.attribute1=60
y.attribute2="Bar"
print("X attributes: \n")
print(x.attribute1)
print(x.attribute2)
print("Y attributes: \n")
print(y.attribute1)
print(y.attribute2)
Esto es lo que el programa parece que sale de mi consola:
>>>
X attributes:
60
Bar
Y attributes:
60
Bar
>>>
Creo que debería decir:
X attributes:
20
Foo
Y attributes:
60
Bar
¿Qué estoy haciendo mal?
Respuesta corta: Tanto 'x' como' y' se refieren al objeto de clase 'exampleClass', no a instancias de este. Para crear instancias, necesita llamar al objeto de clase como en 'x = exampleClass()'. Después, los cambios de atributos que realice a 'x' solo afectarán a la instancia a la que se refiere. – martineau