Sobes.tech
Middle

¿Qué hace el método new en el contexto del lenguaje Python?

sobes.tech AI

Respuesta de la IA

__new__ - es un método de clase que se encarga de crear una nueva instancia de la clase. Se llama antes de __init__ y determina qué objeto será devuelto. Se usa principalmente para crear objetos únicos (Singleton) o objetos de tipo inmutable (como tuple o str).

class Singleton:
    _instance = None

    def __new__(cls):
        # Verifica si ya existe una instancia
        if cls._instance is None:
            # Si no, la crea delegando la creación a la clase padre (object)
            cls._instance = super().__new__(cls)
        # Devuelve la instancia existente o la recién creada
        return cls._instance

# Ejemplos de uso
s1 = Singleton()
s2 = Singleton()

# Resultado esperado: True
print(s1 is s2)

Comparación entre __new__ y __init__:

  • __new__:

    • Método estático (el primer argumento es cls).
    • Se llama antes de crear la instancia.
    • Devuelve la instancia creada.
  • __init__:

    • Método de instancia (el primer argumento es self).
    • Se llama después de crear la instancia.
    • No devuelve valores (retorna implícitamente None).
    • Se usa para inicializar los atributos del objeto creado.