Unrue
01-01-2010, 14:18
Ciao,
studiando Python, arrivato agli attributi di classe, ho letto che se definisco ad esempio:
class prova():
lista = [0,1]
pass
A = prova()
B = prova()
A.lista[0] = 3
Facendo così, modifico anche la lista di B. In pratica, gli attributi di classe mutable non sono static, parlando alla C++. Quelli unmutable invece non hanno questo comportamento, in quanto viene creato un riferimento ad un nuovo oggetto unmutable :
class prova():
x = 10
pass
Quindi potremmo dire che sono "statici",anche se le motivazioni sono differenti tra Python e C++. Ora, se fino a qua non ho detto fesserie :D , non ho capito il vantaggio di avere questa implementazione rispetto a quella stile C++ con attributi di classe statici o non statici. Quello che ho capito è che in Python non si dovrebbe mai modificare gli attributi di classe e gli attributi non statici (credo) sono rimpiazzati con attributi di istanza creati al volo. Cioè, in parole povere, perché non c'è una netta distinzione tra attributi statici e non statici?
studiando Python, arrivato agli attributi di classe, ho letto che se definisco ad esempio:
class prova():
lista = [0,1]
pass
A = prova()
B = prova()
A.lista[0] = 3
Facendo così, modifico anche la lista di B. In pratica, gli attributi di classe mutable non sono static, parlando alla C++. Quelli unmutable invece non hanno questo comportamento, in quanto viene creato un riferimento ad un nuovo oggetto unmutable :
class prova():
x = 10
pass
Quindi potremmo dire che sono "statici",anche se le motivazioni sono differenti tra Python e C++. Ora, se fino a qua non ho detto fesserie :D , non ho capito il vantaggio di avere questa implementazione rispetto a quella stile C++ con attributi di classe statici o non statici. Quello che ho capito è che in Python non si dovrebbe mai modificare gli attributi di classe e gli attributi non statici (credo) sono rimpiazzati con attributi di istanza creati al volo. Cioè, in parole povere, perché non c'è una netta distinzione tra attributi statici e non statici?