Class variable in multiple base classes incompatible
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
I'm getting a mypy error when I inherit from multiple base classes which define the same class variable.
A minimal script looks like:
class Obj:
...
class Left(Obj):
...
class Right(Obj):
...
class A:
val: Obj
class B(A):
val = Left()
class C(A):
val = Right()
class D(B, C):
...
The error I get is:
Definition of "val" in base class "B" is incompatible with definition in base class "C" [misc]
I was expecting there to be no error here. The following script works, for instance:
class Obj:
...
class Left(Obj):
...
class Right(Obj):
...
val: Obj
val = Left()
val = Right()
I can avoid the error by changing the definitions of B and C to:
class B(A):
val: Obj = Left()
class C(A):
val: Obj = Right()
But this seems redundant.
Environment
- Mypy version used: 1.9.0
- Mypy command-line flags: None
- Python version used: 3.11
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, das minimale Skript zur Mehrfachvererbung mit mypy 1.9.0 auszuführen und es mit dem funktionierenden Beispiel einer Zuweisung auf Modulebene zu vergleichen. Verfolge die Behandlung geerbter Definitionen von Klassenvariablen und bestätige, dass kompatible Zuweisungen in Unterklassen nicht mehr den gemeldeten [misc]-Fehler erzeugen, während der bestehende Workaround mit Annotation weiterhin gültig bleibt.
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
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100