Inherited, overridden attribute type reverted to the top parent class type
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
The issue type is probably quite bad, but example should quickly clear things up:
class A:
attr = None
class B(A):
attr: str # type: ignore
class C1(B):
attr = "test"
class C2(B):
pass
class D(C2):
attr = "test"
mypy test.py outputs:
test.py:18: error: Incompatible types in assignment (expression has type "str", base class "A" defined the type as "None")
where line 18 is the last line of above example
As to why I do attr: str # type: ignore - in a nutshell, in my case A class comes from external source and they botched type hints there so I try to fix them in B. Not sure if it should have worked for C1, but if it did I see it breaking in D as a bug due mypy not being consistent, but then again maybe there is a good reason for it?.
Tested with mypy 0.720
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
Comienza ejecutando el ejemplo de herencia proporcionado con mypy 0.720 y compara los diagnósticos para C1 y D. Rastrea la resolución de tipos de los atributos heredados y sobrescritos, y luego confirma que el comportamiento resultante es coherente con la semántica prevista descrita en el issue.
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
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100