[Python] variabili memoria

Filippo Dal Bosco - Filippo.Dalbosco a libero.it
Mar 6 Lug 2010 18:06:33 CEST


Premessa sto iniziando a studiare python per hobby, unico altro
linguaggio che ho usato moltissimi anni fa è stato db3 e clipper
( quindi niente oggetti).
Pur usando abitualmente linux sto facendo i primi esperimenti con
PythonWin che al momento mi sembra abbastanza comodo, ma ho il segunte
problema:

se lancio in pythonWin il banale script
------------------------------------------------------
class Cappuccetto:
    def Nonna(self):
        print "Class Cappuccetto Abcd"
Lupo=Cappuccetto() 
Cappuccetto.Nonna(Lupo)
# oppure
Lupo.Nonna()
print str(id(Lupo)) +" id Lupo=Capucetto"
Lupo="sfigato"
print str(id(Lupo)) + " id Lupo Sfigato"
----------------------------------------------------------
funziona

se lo modifico (in maniera scorretta)
------------------------------------------------------------
class Cappuccetto:
    def Nonna(self):
        print "Class Cappuccetto Abcd"
    Lupo=Cappuccetto() 
    Cappuccetto.Nonna(Lupo)
# oppure
    Lupo.Nonna()
print str(id(Lupo)) +" id Lupo=Capucetto"
Lupo="sfigato"
print str(id(Lupo)) + " id Lupo Sfigato"

funziona....

Se chiudo PythonWin e  lo rilancio NON funziona e dice che  Lupo non
esiste.

Questo vuol dire che Lupo è rimasto in memoria dopo il primo script
corretto ed ha permesso al secondo script scorretto di funzionare.
Infatti per verificare ho aggiunto id(Lupo)

Questo mi incasina lo studio di Python perchè se  faccio delle prove
con script leggermente diversi rischio di non capire se realmente
funzionano o meno.

Domada c' è un modo di distruggere le variabili?
Basterebbe mettere alla fine di ogni script la loro distruzione  per
risolvere il problema.

grazie


-- 
Filippo


Maggiori informazioni sulla lista Python