Ciao Pietro! credo che la risposta di Daniele Varrazzo sia già completa, ma aggiungo una cosa in attesa di sapere meglio cosa devi fare con quelle finestre
>class finestra(Tkinter.Toplevel): > def __init__(self): > self=Tkinter.Tk() #Il mio oggetto instanziato lo >voglio identico ad una finestra toplevel "classica"... se hai ereditato da Tkinter.Toplevel la tua classe è già una Toplevel "classica". Forse con questa frase (a parloe) ed il codice sopr, volevi dire questo: class finestra(Tkinter.Toplevel): def __init__(self, mioattr=None, **kw): super(finestra, self).__init__(**kw) self.mio_attr = mioattr o alternativamente: class finestra(Tkinter.Toplevel): def __init__(self, mioattr=None, **kw): Tkinter.Toplevel.__init__(self, **kw) self.mio_attr = mioattr dove vedi che puoi scegliere di avere gli stessi argomenti, ma puoi anche estendere gli argomenti nel costruttore (puoi usare anche *args). Questa è una tecnica molto usata per estendere una classe. Resta vero il suggerimento di Daniele che in situazioni simili una funzione 'factory' può fare al caso ma ci sono anche altre possibilità. In gtk mi sono spesso trovato ad usare classi che come attributo avevano un widget GTK invece che classi che fossero estensioni di un widget GTK. Non so quanto sia pratico seguire le slide senza avere seguito il talk ma Alex Martelli ha parlato dei Design Pattern al Pycon: credo che soprattuto le prime slides potrebbero interessarti: http://www.pycon.it/static/talks/it_pydp.pdf ciao sandro *:-) PS: io non ho idea di cosa faccia Tkinter.Tk() ma se ricordo corretto apre una finestra 'root' mentre toplevel è solo... una toplevel. Di 'root'ce ne è una sola, di Toplevel ce ne possono essere tante. Perchè erediti da una classe per poi sostituirla con una classe diversa, invece che ereditare direttamente da Tk? _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python