Issue initialising dataclass with getters and setters
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 54
Description
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:
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la dataclass fournie et exécutez python -m mypy my.py pour reproduire l’erreur de nom dupliqué. Suivez la manière dont les dataclasses et les property getters/setters sont analysés, puis ajoutez un test de régression montrant que ce modèle est accepté sans l’erreur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 28/100