Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

`get_type_hints` occurs NameError only if import `__future__.annotations`

Aberta
#2,132 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
28/100
Tipo de issue
Bug
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
python
Domínio
tooling

Direção de pesquisa

Reproduza ambos os exemplos e compare como typing.get_type_hints resolve a anotação de retorno da função local com e sem future.annotations. Em seguida, inspecione a implementação de get_type_hints e seus testes para aliases genéricos e anotações adiadas; considera-se concluído quando o comportamento esperado e qualquer workaround compatível estiverem estabelecidos no issue ou cobertos por um teste de regressão direcionado.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

topic: other
from typing import get_type_hints


class A[T]:
    def __init__(self, x: T):
        self.x = x

    def foo(self):
        def bar() -> T:
            return self.x

        print(get_type_hints(bar))


A[int](5).foo()

Output: {'return': T}

from __future__ import annotations  # Add this

from typing import get_type_hints


class A[T]:
    def __init__(self, x: T):
        self.x = x

    def foo(self):
        def bar() -> T:
            return self.x

        print(get_type_hints(bar))


A[int](5).foo()

Error:

NameError: name 'T' is not defined

Is this the expected behavior?

Also, is there a way to make it work if __future__.annotations is imported?

Linguagem predominante
Python
Estrelas
1.8k
Forks
302
Merge médio
20h 26min
PRs com merge (30d)
10

Preparar o ambiente

Ainda não verificamos os arquivos de configuração deste projeto. Comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de python/typing

Todas as issues de python/typing

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.