Keyword arguments to `__str__` are rejected
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
class X:
def __str__(self, arg: int | None = None) -> str:
return f"{arg}"
def user(x: X) -> str:
return x.__str__(arg=42)
main.py:2: note: "__str__" of "X" defined here
main.py:6: error: Unexpected keyword argument "arg" for "__str__" of "X" [call-arg]
https://mypy-play.net/?mypy=latest&python=3.10&gist=b0426a5fffb000335d04492959d69b34
This works fine at runtime. Interestingly, mypy allows passing additional positional arguments to __str__, e.g. x.__str__(42). I assume something is overzealously applying the general rule that dunders usually don't accept keyword arguments.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo l'esempio nel playground mypy collegato e analizza il percorso del controllo dei tipi per le chiamate a str. Confronta la gestione degli argomenti con nome con il caso degli argomenti posizionali già accettato; il lavoro è completato quando la chiamata con argomento con nome viene accettata senza indebolire i controlli non correlati delle chiamate dunder.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 52/100