Sobes.tech
Middle

O que faz o método new no contexto da linguagem Python?

sobes.tech IA

Resposta da IA

__new__ - é um método de classe responsável por criar uma nova instância da classe. É chamado antes de __init__ e determina qual objeto será retornado. É mais utilizado para criar objetos únicos (Singleton) ou objetos de tipo imutável (como tuple ou str).

class Singleton:
    _instance = None

    def __new__(cls):
        # Verifica se já existe uma instância
        if cls._instance is None:
            # Se não, cria uma delegando a criação à classe pai (object)
            cls._instance = super().__new__(cls)
        # Retorna a instância existente ou recém-criada
        return cls._instance

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

# Resultado esperado: True
print(s1 is s2)

Comparação entre __new__ e __init__:

  • __new__:

    • Método estático (primeiro argumento é cls).
    • É chamado ANTES da criação da instância.
    • Retorna a instância criada.
  • __init__:

    • Método de instância (primeiro argumento é self).
    • É chamado DEPOIS da criação da instância.
    • Não retorna valores (retorna implicitamente None).
    • Usado para inicializar atributos do objeto criado.