ExpertiDict

Python · Avançado · Inglês · Técnico

dunder new

/ˈdʌndɚ nu/substantivo

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__

Veja também

Todos os termos de Python