python / python/mypy

`_v` can be read and written from the outside of the class so the generic class should be invariant properly.

Abierto
#20,501 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug pending
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

*Memo:

  • mypy --strict test.py
  • mypy 1.19.1
  • Python 3.14.0
  • Windows 11

v can be read and written from the outside of the class so the generic class is invariant properly as shown below:

class Cls[T]:
    v: T = cast(T, 100) # Invariant

cls: Cls[int] = Cls[int]()

# It indicates `Invariant`.
cls1: Cls[float] = cls # Errpr
cls2: Cls[int] = cls   # No error
cls3: Cls[bool] = cls  # Error

# Read & Write
print(cls.v) # No error
cls.v = 200  # No error

Now, _v can be read and written from the outside of the class but the generic class is covariant improperly as shown below so it should be invariant properly:

*Memo:

  • A single leading underscore(_abc) just indicates Internal use so it's not private(Readable & Writable).
class Cls[T]:
    _v: T = cast(T, 100) # Covariant

cls: Cls[int] = Cls[int]()

# It indicates `Covariant`.
cls1: Cls[float] = cls # No error
cls2: Cls[int] = cls   # No error
cls3: Cls[bool] = cls  # Error

# Read & Write
print(cls._v) # No error
cls._v = 200  # No error

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza reproduciendo el informe de test.py con mypy --strict usando las versiones indicadas, mypy 1.19.1 y Python 3.14.0. Rastrea cómo mypy infiere la varianza para clases genéricas con atributos públicos y atributos con un solo guion bajo. Se considera terminado cuando el ejemplo _v se trata como invariante, conservando las asignaciones válidas y no válidas mostradas.

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
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.