Python - Como se utiliza __NEW__

 
Vista:

Como se utiliza __NEW__

Publicado por guille (4 intervenciones) el 30/12/2015 14:35:22
Hola, estoy mirando código para aprender, y me he topado con una clase que implementa un constructor __new__ en vez de __init__ quería saber para que se usa o en que circunstancias, por lo que puede leer, en un caso, es utilizado al crear objetos inmutables pero no logro entenderlo del todo, alguien podría orientarme si no es molestia? les paso la definición abajo

Gracias de antemano y un gran abrazo

def __new__(cls, *p, **k):
inst = object.__new__(cls)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Como se utiliza __NEW__

Publicado por xve (1646 intervenciones) el 30/12/2015 18:43:04
Hola Guille, haber si me se explicar...

utiliza __new__ cuando quieras controlar la creación del objeto
utiliza __init__ cuando quieras gestionar la inicialización del objeto

__new__ es lo primero que se ejecuta cuando se instancia una clase y es el responsable de devolver una instancia de esa clase.
__init__ no devuelve nada y solo se encarga de inicializar los valores iniciales del objeto

Como comentas, no deberías sobrescribir __new__ a no ser que sea una subclase inmutable del tipo str, int, unicode o tupla.

Recuerda que en la definición de __init__ no tienes que pasar el self como parámetro, ya que todavía no existe la instancia de la clase.

No se si me he sabido explicar... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como se utiliza __NEW__

Publicado por guille (4 intervenciones) el 01/01/2016 14:22:34
gracias xve lo he comprendido, un gran abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar