python / python/mypy

Warn if instance atribute is defined outside of __init__

Ouverte
#10,552 3 commentaires 4 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

feature
Langage dominant
Python
Étoiles
20.6k
Forks
3.3k
Métriques de merge des PR
Métriques de PR en attente

Description

Feature

(Optionally?) generate error if the instance attribute is defined outside of __init__

Pitch

Mypy does not generate any errors for the code below:

class Tst:
    def __init__(self) -> None:
        ...

    def create_field(self) -> None:
        self.abc = 1  # Please, generate error here

    def print_field(self) -> None:
        print(self.abc)  # And, optionally here...


def main() -> None:
    tst = Tst()
    tst.print_field()


if __name__ == '__main__':
    main()

which fails with run time error, caused by the absence of the abc attribute definition in the __init__ method.

Additionaly:

PyCharm and pylint generate error in the line 6.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

L’issue ne nomme aucun fichier d’implémentation, test ou point d’entrée. Commencez par l’exemple Python fourni et examinez la manière dont mypy gère actuellement les attributs d’instance ; le travail est considéré comme terminé lorsqu’un diagnostic pour les affectations en dehors de init a été défini, qu’il a été déterminé si les lectures telles que print_field sont incluses, et que le comportement demandé est couvert par des tests.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
devtools
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.