list of types with multiple bases only uses first shared base?
Offen
Dieses Issue hat noch niemand übernommen.
feature
needs discussion
priority-2-low
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
i may be misunderstanding something, but it seems that when making a list of types, each with multiple shared base classes, mypy mistakenly infers this to be a list of the first base only, missing others
$ cat mypytest.py
# two different base classes with different attributes
class B1:
b1 = None
class B2:
b2 = None
# two classes that subclass both B1 and B2
class S1(B1, B2):
pass
class S2(B1, B2):
pass
# a list of the subclasses
types = [S1, S2]
# it seems mypy thinks `types` is List[Type[B1]]
ok = [x.b1 for x in types]
why_not_ok = [x.b2 for x in types]
$ mypy mypytest.py
mypytest.py:24: error: "Type[B1]" has no attribute "b2"
$ mypy --version
mypy 0.770+dev.b2edab25b7e4a6131484bb6edf314e2fa078aee7
$ python -V
Python 3.7.3
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 mit der Reproduktion in mypytest.py und führe sie mit mypy aus, um den inferierten Typ und den Fehler zu bestätigen. Verfolge, wie der Typ einer Liste von Klassen mit mehreren gemeinsamen Basisklassen inferiert wird, und überprüfe anschließend, dass sowohl b1 als auch b2 akzeptiert werden, ohne die Beziehung mit mehreren Basisklassen zu verlieren.
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
- 35/100