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

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a