`overloaded function has no attribute "fset"` error when attempting to assign to base class's setter
Offen
Dieses Issue hat noch niemand übernommen.
bug
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
class Foo:
def __init__(self) -> None:
self._value = 1
@property
def value(self) -> int:
return self._value
@value.setter
def value(self, new_value: int) -> None:
self._value = new_value
class Bar(Foo):
@property
def value(self) -> int:
return super().value
@value.setter
def value(self, new_value: int) -> None:
Foo.value.fset(self, new_value) # error: overloaded function has no attribute "fset" [attr-defined]
this is working around the fact that assigning to super().value doesn't work at runtime:
super().value = new_value # error: Invalid assignment target [misc]
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 bereitgestellten Foo- und Bar-Reproduktion im verlinkten mypy-play-Spielplatz und vergleiche die Diagnose für Foo.value.fset mit der ungültigen Zuweisung von super().value. Verfolge den Prüfpfad für überladene Attribute und Property-Setter. Als erledigt gilt, dass die gültige Verwendung des Setters der Basisklasse ohne den gemeldeten attr-defined-Fehler behandelt wird und eine entsprechende Abdeckung für diese Reproduktion hinzugefügt wurde.
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
- 45/100