Repaso
English
PythonAvanzadoPY-34

¿Cuál es la diferencia entre __new__ e __init__?

Opciones

  1. Son alias, así que definir cualquiera de los dos tiene el mismo efecto
  2. __new__ crea y devuelve la instancia; __init__ la rellena (Opción correcta)
  3. __init__ se ejecuta primero y __new__ después
  4. __new__ solo se usa cuando escribes una metaclass

Respuesta

__new__ crea y devuelve la instancia; __init__ la inicializa

Por qué

Crear un objeto ocurre en dos pasos: __new__ construye el objeto vacío y lo devuelve, y luego __init__ lo rellena con los valores iniciales.

Rara vez necesitas __new__. Se usa cuando debes controlar la propia creación: heredar de tipos inmutables como int o str, o devolver un objeto existente (en caché).

Recuerda

__new__ crea, __init__ inicializa.

Términos clave

Practica esta pregunta en Repaso