[Python] Re: Digest di Python, Volume 19, Numero 11

Manlio Perillo manlio_perillo a libero.it
Ven 16 Nov 2007 13:42:04 CET


Pietro Battiston ha scritto:
> [...]
> 
>> Per fare quello  che vuoi, devi utilizzare il __new__
> 
> Grazie mille, in effetti è proprio quello che mi serviva. Ma __new__ 
> rimpiazza __init__?
> 

No.
Trovi maggiori info qui:
http://www.python.org/doc/newstyle.html

Purtroppo la documentazione sulle "nuove" classi non è stata ancora del 
tutto integrata nella documentazione ufficiale.

> Nella documentazione ufficiale 
> (http://docs.python.org/ref/customization.html), sta scritto " If 
> __new__() returns an instance of cls, then the new instance's __init__() 
> method will be invoked"
> In un'altra pagina sull'argomento 
> (http://www.wellho.net/mouth/1146_-new-v-init-python-constructor-alternatives-.html), 
> invece ho trovato scritto "If __new__ is defined on a class, it is 
> called in preference to __init__"
> 
> Ma il seguente codice non mi conferma né l'una né l'altra ipotesi!
> 
> #####################
> import Tkinter
> 
> class finestra(Tkinter.Toplevel):

class finestra(object, Tkinter.Toplevel):
>     def __new__(cls):
>         print "uno"
>         return Tkinter.Tk()
>     def __init__(self):
>         print "due"
>       root=finestra()
> #####################
> 

 > [...]


Manlio Perillo


Maggiori informazioni sulla lista Python