Keyword arguments to `__str__` are rejected
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza reproduciendo el ejemplo del playground de mypy enlazado e inspecciona la ruta de comprobación de tipos para las llamadas a str. Compara el tratamiento de los argumentos con nombre con el caso de los argumentos posicionales, que ya se acepta; se considera terminado cuando la llamada con argumentos con nombre se acepta sin debilitar las comprobaciones no relacionadas de llamadas a dunder.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 52/100