Issue initialising dataclass with getters and setters
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
When using mypy with a dataclass that includes getters and setters it throws an error. It returns Name 'byr' already defined on line 5.
To Reproduce
To reproduce use mypy with this script:
@dataclass
class Passport:
byr: int
@property
def byr(self) -> int:
return self._byr
@byr.setter
def byr(self, value) -> None:
if int(value) < 1920 or int(value) > 2002:
raise Exception("Birth year must be between 1920 and 2002")
self._byr = int(value)
Expected Behavior
I would have expected it to accept this, as this seems to be a standard way to handle getters and setters.
Your Environment
- Mypy command-line flags: python -m mypy my.py
- Python version used: 3.9.0
- Operating system and version:
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 dataclass und führe python -m mypy my.py aus, um den Fehler wegen des doppelten Namens zu reproduzieren. Verfolge, wie dataclasses und property getters/setters analysiert werden, und füge dann einen Regressionstest hinzu, der zeigt, dass dieses Muster ohne den Fehler akzeptiert wird.
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
- 28/100