ExpertiDict

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

avaliação adiada de anotações

/a.va.lja.ˈsɐ̃w a.ˈdʒja.dɐ dʒi a.no.ta.ˈsõjs/substantivo

Comportamento do Python 3.14 em que as anotações não são avaliadas na definição, mas só quando solicitadas. Assim, referências a nomes que ainda não existem passam a funcionar.

Onde usar

Resolve o problema de anotar um método com a própria classe ainda em construção, sem aspas nem import de __future__. Aparece ao migrar projetos e em bibliotecas que leem __annotations__.

Em código

class No:
  def __init__(self, pai: No | None):
    self.pai = pai

# 3.14: sem aspas e sem __future__
print(No.__init__.__annotations__)

Exemplos

No 3.14 a anotação com a própria classe funciona sem aspas.

Libs que liam __annotations__ precisaram se adaptar à avaliação adiada.

Cuidado

Não confunda com from __future__ import annotations, que guarda tudo como string; no novo modelo as anotações são avaliadas sob demanda, e o módulo annotationlib ajuda a lê-las.

Sinônimos

anotações preguiçosas

Veja também

Todos os termos de Python