Sono nuovo in Python e ho imparato che gli attributi di classe sono come membri di dati statici in C++. Tuttavia, mi sono confuso dopo aver provato il seguente codice:python: attributi di classe e attributi di istanza
>>> class Foo:
... a=1
...
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
1
>>> f1.a=5
>>> f1.a
5
>>> f2.a
1
Non dovrebbe anche f2.a uguale a 5? Se un è definito come una lista invece di un numero intero, si prevede
il comportamento:
>>> class Foo:
... a=[]
...
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
[]
>>> f1.a.append(5)
>>> f1.a
[5]
>>> f2.a
[5]
ho guardato Python: Difference between class and instance attributes, ma non risponde alla mia domanda.
Qualcuno può spiegare perché la differenza? Grazie
possibile duplicato di [Come evitare di avere dati di classe Python condivisi tra le istanze?] (Http: // stackoverflow.it/questions/1680528/how-do-i-avoid-having-python-class-data-shared-instance) –