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.
- Método estático (primeiro argumento é
-
__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.
- Método de instância (primeiro argumento é