__new__ vs __init__

Xin xinxic en gmail.com
Mie Nov 14 17:17:08 CET 2007


Yo lo he tenido que utilitzar.
Antes de saber que existia perdí muchas horas.

La classe que tenia que usar heredaba de "long" i se encargaba de  
analizar un flujo de bits (enormes), de forma que podia extraer una  
cierta cantidad de bits como si fuera otro flujo. Esto me servia para  
analizar dichos datos en trozos.

La idea principal és que si heredas de qualquier tipo de dato  
primitivo, esos datos que siempre tienen el mismo id, debe usar-se  
__new__

Puedes saber si és un tipo primitivo si mantiene el mismo "id".
 >>> i = 5
 >>> f = 5.
 >>> l = 5L
 >>> t = '5'
 >>> id(5) == id(i)
True
 >>> id(5.) == id(f)
False
 >>> id(5L) == id(l)
False
 >>> id('5') == id(t)
True

Cachis, ahora el long i el float no me dan el mismo id.
Eso no puede ser !!!



El 14/11/2007, a las 15:58, tny escribió:

> Sé que __new__ es llamado antes de que se cree el objeto, y es el
> encargado de crearlo y devolverlo.
>
> Sé que __init__ es llamado después de __new__ para inicializarlo.
>
> Yo de momento nunca he necesitado usar __new__ porque para lo que hago
> __init__ me basta.
>
> El caso es que me han comentado que el código que genera tepache  
> invita
> a inicializar los widgets en el __new__, y yo considero que debe ir en
> __init__
>
> ¿Cuándo se debería emplear __init__ y cuando __new__?
>
>
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes

_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es