python / python/mypy

"Cannot determine type" error in `__init__` when argument has the same type as the class and accessing attribute before it's defined

Aperta
#15,714 0 commenti 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

from __future__ import annotations

from typing import reveal_type


class Foo:
    def __init__(self, value: Foo | None = None):
        if value:
            reveal_type(value.parent)  # Cannot determine type of "parent"
        self.parent = value

playground

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Iniziate riproducendo l’esempio nel mypy playground collegato, concentrandovi sull’accesso a value.parent prima che self.parent venga assegnato. Tracciate la gestione da parte del type checker di questo caso di init autoreferenziale e verificate che la diagnostica errata "Cannot determine type" sia scomparsa e che all’attributo venga assegnato il tipo inferito previsto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.