Python · Avançado · Inglês · Técnico
dunder new
Método __new__, que cria a instância antes de o __init__ inicializá-la. É um método estático que recebe a classe e devolve o objeto novo.
Onde usar
Necessário ao herdar tipos imutáveis como int, str e tuple, ou ao implementar singletons e caches de instâncias. No dia a dia, quase tudo se resolve só com __init__.
Em código
class Positivo(int):
def __new__(cls, v):
return super().__new__(cls, abs(v))
print(Positivo(-7))Exemplos
We override dunder new to return a cached instance.
Sobrescrevemos o dunder new para devolver uma instância em cache.
Subclassing int requires dunder new, not init.
Herdar de int exige o dunder new, não o init.
Cuidado
Se o __new__ não devolver uma instância da classe, o __init__ não é chamado.
Sinônimos
__new__