[Python] gerarchia classe

Matteo Perini perini.matteo a gmail.com
Gio 19 Lug 2012 12:49:01 CEST


Ciao a tutti.
Ho qualche problema a capire come si struttura la "gerarchia" in una classe.
Riporto un pezzo di codice per spiegarmi meglio.

class Window:

     def __init__(self):
         builder = gtk.Builder()
         builder.add_from_file("Gui.glade")
         self.win = builder.get_object("WinMain")
         self.win.connect("destroy", self.exit)
         self.button=builder.get_object('button')
         self.button.connect('clicked',self.do)
         self.i=234
     def do(self,widget):
         def esempio(self):
             return "ciao"
         print "ok"
         for i in range(10):
               print esempio

cosė non ho problemi ma.... come faccio a richiamare all'interno della 
def esempio self.i  ????

ad esempio

class Window:

     def __init__(self):
         builder = gtk.Builder()
         builder.add_from_file("Gui.glade")
         self.win = builder.get_object("WinMain")
         self.win.connect("destroy", self.exit)
         self.button=builder.get_object('button')
         self.button.connect('clicked',self.do)
         self.i=234
     def do(self,widget):
         def esempio(self):
             return self.i                 <-------- modifica
         print "ok"
         for i in range(10):
               print esempio

c'č un modo per dire che self non č riferita alla def do?
Scusate ma non ho capito bene il comportamento di self quando le def 
sono annidate.

Per adesso per far andare il codice sopra ho fatto cosė:

class Window:

     def __init__(self):
         builder = gtk.Builder()
         builder.add_from_file("Gui.glade")
         self.win = builder.get_object("WinMain")
         self.win.connect("destroy", self.exit)
         self.button=builder.get_object('button')
         self.button.connect('clicked',self.do)
         self.i=234

     def esempio(self):
         return self.i
     def do(self,widget):
         print "ok"
         for i in range(10):
               print self.esempio

ma non volevo lasciare la def esempio all'esterno di def do.
Cme posso fare?
Grazie a tutti quelli che hanno letto fino a qui per la pazienza.
Ciao
Matteo



Maggiori informazioni sulla lista Python