`_v` can be read and written from the outside of the class so the generic class should be invariant properly.
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
*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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den Bericht aus test.py mit mypy --strict unter den angegebenen Versionen mypy 1.19.1 und Python 3.14.0 zu reproduzieren. Verfolge, wie mypy die Varianz für generische Klassen mit öffentlichen Attributen und Attributen mit einfachem Unterstrich ableitet. Als abgeschlossen gilt die Aufgabe, wenn das _v-Beispiel als invariant behandelt wird und die gezeigten gültigen und ungültigen Zuweisungen erhalten bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100