IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Redefinition de méthode, erreur avec pytlint 1.8 python 3.6


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Par défaut Redefinition de méthode, erreur avec pytlint 1.8 python 3.6
    Bonjour,
    J'ai un problème avec Pylint, j'essaye de redefinir une methode d'une classe mère, mais pytlint n'aime pas et je ne comprend pas pourquoi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pylint.exe test.py
    No config file found, using default configuration
    ************* Module test
    W: 36, 4: Parameters differ from overridden 'get_voiture_info' method (arguments-differ)
     
    ------------------------------------------------------------------
    Your code has been rated at 9.63/10 (previous run: 9.63/10, +0.00)
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    # -*- coding: utf-8 -*-
    """
    blabal
    """
     
     
    class Voiture:
        """
        blabla
        """
     
        name = ""
     
        def __init__(self):
            """bl"""
            print("je suis une voiture, je viens d'ête cree")
     
        def get_voiture_info(self):
            """bl"""
            print("J'ai quatres roues et un moteur{}".format(self.name))
     
        def test(self):
            """lkj"""
            pass
     
     
    class PSA(Voiture):
        """
        blblbl
        """
        def __init__(self):
            """bl"""
            print("ici c'est PSA")
            super().__init__()
     
        def get_voiture_info(self, le_type):
            """bl"""
            print("cette tuture est une de PSA de type {}".format(le_type))
     
        def test(self):
            """h"""
            pass
     
     
    class Truc():
        """
        blllll
        """
        yop = ""
     
        def __init__(self):
            """bl"""
            pass
     
        def machin(self):
            """bl"""
            print("le bidule{}".format(self.yop))
     
        def test(self):
            """r"""
            pass
     
     
    VOITURE = Voiture()
    PSA = PSA()
     
    PSA.get_voiture_info("C4")
     
    # citroen = Citroen()
    # citroen.machin()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 589
    Par défaut
    Salut,

    Citation Envoyé par KR_Prog Voir le message
    J'ai un problème avec Pylint, j'essaye de redefinir une methode d'une classe mère, mais pytlint n'aime pas et je ne comprend pas pourquoi:
    Un programme comme pylint va toujours appliquer des règles qui en général font du sens mais qui ne s'appliquent pas toujours. Soit vous avez fait une erreur qu'il faut signaler, soit c'est voulu et çà souligne un défaut dans votre conception que vous devez explicitement tolérer (avec un # pylint: disable=...)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Par défaut
    Salut,

    Regarde dans la classe mère la méthode get_voiture_info et compare ses arguments avec ta réimplémentation de cette méthode.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Par défaut
    Salut et merci pour ta réponse.

    Citation Envoyé par wiztricks Voir le message
    Un programme comme pylint va toujours appliquer des règles qui en général font du sens mais qui ne s'appliquent pas toujours.
    - W
    Ok, cela veut-il dire que pylint n'aime pas les redéfinitions de méthode de classe ?

    Citation Envoyé par wiztricks Voir le message
    Salut,
    Soit vous avez fait une erreur qu'il faut signaler
    - W
    Lors de l'exécution je n'ai pas d'erreur et le comportement est celui que je veux, mais comment savoir si ma syntaxe n'est pas/est pythonique/propre ?

    Citation Envoyé par wiztricks Voir le message
    Salut,
    soit c'est voulu et çà souligne un défaut dans votre conception que vous devez explicitement tolérer (avec un # pylint: disable=...)
    - W
    merci pour ce point, c'est en désespoir de cause que ferai comme cela, mais c'est bien de savoir que ça existe.

    J'aimerai bien au moins comprendre le message Pylint, car je ne vois pas ce j'ai codé de mal (ce programme n'est qu'un exemple, un cas d'étude)

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 589
    Par défaut
    Citation Envoyé par KR_Prog Voir le message
    J'aimerai bien au moins comprendre le message Pylint, car je ne vois pas ce j'ai codé de mal (ce programme n'est qu'un exemple, un cas d'étude)
    Ben, en fait çà n'a rien à voir avec Python.
    C'est une une violation du principe de substitution de Liskov.
    Et tout bien considéré, comment un constructeur de plein de voitures comme PSA pourrait hériter d'une "Voiture". On pourrait lui associer une collection de modèles (ou de voiture) mais difficile de le faire hériter de.
    note: mais çà n'empêche pas Python de s'en accommoder.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Erreur avec la méthode Sort
    Par phal2ip dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 20/10/2008, 10h21
  2. [DOM] Erreur avec la méthode setAttribute
    Par PierreBTSIG dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 19/05/2008, 14h45
  3. Message d'erreur avec la méthode UpdateBatch (ADO)
    Par GnarlyYoyo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2007, 22h12
  4. [Zip] Erreur avec la méthode add() de PclZip
    Par Anduriel dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 20/01/2007, 17h42
  5. Erreur avec la méthode OpenRecordset
    Par NPortmann dans le forum VBA Access
    Réponses: 4
    Dernier message: 05/05/2006, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo