no error when overriding property with incompatible return type when the overridden property has another decorator
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-descriptors
topic-inheritance
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
from contextlib import contextmanager
from typing import Iterator
@contextmanager
def foo() -> Iterator[None]:
yield
class Bar:
@property
def asdf(self) -> int:
return 2
class Baz(Bar):
@property
def asdf(self) -> str: # no error
return ""
@asdf.setter
@foo()
def asdf(self, new_value): ...
removing the @foo() decorator makes the error appear:
main.py:16: error: Signature of "asdf" incompatible with supertype "Bar" [override]
main.py:16: note: Superclass:
main.py:16: note: int
main.py:16: note: Subclass:
main.py:16: note: str
Found 1 error in 1 file (checked 1 source file)
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
Führe den bereitgestellten Python-Reproducer aus und vergleiche ihn mit der Version, in der @foo() entfernt wurde. Verfolge, wie dekorierte Property-Setter während der Prüfung von Property-Überschreibungen behandelt werden; als erledigt gilt die Aufgabe, wenn mypy den inkompatiblen int-to-str-Override auch im dekorierten Fall meldet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100