ho problemi a capire come funzionano le variabili di classe/istanza in python. Non capisco perché quando provo questo codice la variabile di lista sembra essere una variabile di classevariabili di istanza della classe python e variabili di classe
class testClass():
list = []
def __init__(self):
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
uscita:
['thing']
['thing', 'thing']
e quando faccio questo sembra essere un caso variabile
class testClass():
def __init__(self):
self.list = []
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
uscita:
['thing']
['thing']
molte grazie
jon
Se ho capito bene, stai chiedendo delle motivazioni alla base di una particolare decisione progettuale riguardante la sintassi di Python. Per tali domande, la risposta migliore è "perché si adatta allo spirito della lingua", o più spudoratamente: "chiedi al suo creatore". – Xion
ok quindi le variabili sono variabili di classe per impostazione predefinita, da cui derivava la mia confusione, che avrebbe dovuto essere la mia domanda, fare variabili predefinite alle variabili di classe –
@jonathantopf No, le variabili NON sono variabili di classe per impostazione predefinita. In Python non si dichiarano varables. Del resto, non sono in realtà variabili (python è una _variableless_ lanuage), solo nomi. E non dichiari o assegni nomi, li leghi a un oggetto. E ogni oggetto nel runtime ha un dizionario di nomi per oggetto. E anche se due oggetti sono della stessa classe, possono avere dizionari molto diversi. – rodrigo