Soy nuevo en python y aprendí que los atributos de clase son como miembros de datos estáticos en C++. Sin embargo, me confundí después de probar el siguiente código:python: atributos de clase y atributos de instancia
>>> class Foo:
... a=1
...
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
1
>>> f1.a=5
>>> f1.a
5
>>> f2.a
1
No debería f2.a también igual a 5?
Si a se define como una lista en lugar de un número entero, se espera que el comportamiento:
>>> class Foo:
... a=[]
...
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
[]
>>> f1.a.append(5)
>>> f1.a
[5]
>>> f2.a
[5]
Miré a Python: Difference between class and instance attributes, pero no responde a mi pregunta.
¿Alguien puede explicar por qué la diferencia? Gracias
posible duplicado de [¿Cómo evito tener datos de clase de Python compartidos entre instancias?] (Http: // stackoverflow.com/questions/1680528/how-do-i-avoid-having-python-class-data-shared-among-instances) –