mypy fails to report missing "private" __x attribute
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Mypy doesn't seem to grok that self.__x in a subclass is different from self.__x in a superclass. It also doesn't seem to understand order of initialization.
- Are you reporting a bug, or opening a feature request?
bug
- Please insert below the code you are checking with mypy
class A:
def __init__(self, x: int) -> None:
self.__x = x # replace this with pass and mypy reports the error
class B(A):
def __init__(self) -> None:
A.__init__(self, self.__x)
B()
- What is the actual behavior/output?
$ mypy --strict tytest.py
Success: no issues found in 1 source file
$ python tytest.py
Traceback (most recent call last):
File "tytest.py", line 11, in <module>
B()
File "tytest.py", line 8, in __init__
A.__init__(self, self.__x)
AttributeError: 'B' object has no attribute '_B__x
- What is the behavior/output you expect?
mypy should report:
tytest.py:8: error: "B" has no attribute "__x
- What are the versions of mypy and Python you are using?
mypy 0.700
Do you see the same issue after installing mypy from Git master?
yes (mypy-0.770+dev.01ca4e062e38a9db8f462b9464fbbd5dd945a8cf)
- What are the mypy flags you are using? (For example --strict-optional)
--strict
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 exécuter l’exemple tytest.py signalé avec mypy --strict et comparez le code accepté avec l’AttributeError de Python. Lisez les chemins de vérification des types pour la gestion des noms à double soulignement et l’initialisation des instances, puis ajoutez des tests qui distinguent les attributs privés de la sous-classe et de la superclasse et signalent l’attribut manquant avant l’exécution du programme.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 55/100