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 :

No value for argument lors de l'appel d'une methode [Python 3.X]


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Mai 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 55
    Points : 28
    Points
    28
    Par défaut No value for argument lors de l'appel d'une methode
    Bonjour à tous,

    J'apprend Python depuis très récemment et pendant mes tests je rencontre un problème que je n'arrive pas à solutionner.
    C'est un projet tout simple.
    J'ai un fichier .py dans lequel se trouve le code principal :

    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
    # coding:utf-8
     
    import mesCoursClasses
     
    choixMenu = 0
     
    while choixMenu != 5:
        print("1 : Nouvelle classe")
        print("2 : Modifier une classe")
        print("3 : Voir les classes")
        print("4 : Nouveau devoir")
        print("5 : Modifier un devoir")
        print("6 : Quitter")
     
        try:
            choixMenu = int(input("Choisissez votre action :"))
     
            if choixMenu == 1:
                print("Choix {}".format(choixMenu))
     
                # Nouvelles valeurs pour la nouvelle classe stockées dans des variables
                nom = str(input("Choisissez un nom pour la nouvelle classe : "))
                effectif = int(input("Définissez un effectif pour la nouvelle classe : "))
                couleur = str(input("Choisissez une couleur pour la nouvelle classe : "))
     
                # Instanciation de la classe
                maClasse = mesCoursClasses.MesClasses(nom, effectif, couleur)
                # Sauvegarde de la classe
                mesCoursClasses.MesClasses.sauvegarderClasse(maClasse)
     
            if choixMenu == 2:
                print("Choix {}".format(choixMenu))
     
            if choixMenu == 3:
                print("Choix {}".format(choixMenu))   
     
                maClasse = mesCoursClasses.MesClasses.chargerClasse()
                mesCoursClasses.MesClasses.afficherClasse(maClasse)
     
     
            if choixMenu == 4:
                print("Choix {}".format(choixMenu))
     
            if choixMenu == 5:
                print("Choix {}".format(choixMenu))
     
            if choixMenu == 6:
                print("A bientot !")
                exit()
        except ValueError:
            print("Utilisez des chiffres pour faire votre choix !")
    et un fichier .py pour les différentes classes :

    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
    # Coding:utf-8
     
    import pickle  # Import pour la gestion de fichier
     
    # Classes de l'application Mon Cahier de Textes
     
    # Classe des classes
    class MesClasses:
        def __init__(self, nom, effectif, couleur):
            self.nomClasse = nom
            self.effectifClasse = effectif
            self.couleurClasse = couleur
            print("Nouvelle classe créée avec pour nom {}, il y a {} élèves et la couleur choisit est {}".format(nom, effectif, couleur))
     
        def modifierClasse(self, nouveauNom, nouvelEffectif, nouvelleCouleur):
            self.nomClasse = nouveauNom
            self.effectifClasse = nouvelEffectif
            self.couleurClasse = nouvelleCouleur
     
        def afficherClasse(self, classe):
            print("Nom de la classe : {} ; Effectif : {} ; Couleur : {}".format(classe.nomClasse, classe.effectifClasse, classe.couleurClasse))
     
        def sauvegarderClasse(self, classe):
            """with open("classes.data", "wb") as fic:
                record = pickle.Pickler(fic)
                record.dump(classe)
            """
            fichier = open("classes.data", "wb")
            pickle.dump(classe, fichier)
            fichier.close()
     
        def chargerClasse(self):
            """with open("classes.data","rb") as fic:
                get_record = pickle.Unpickler(fic)
                classe = get_record.load()
            """
            fichier = open("classes.data", "rb")
            classe = pickle.load(fichier)
            fichier.close()
            return classe
     
    # Classe des devoirs
    class MesDevoirs:
        def __init__(self, date, typeD, contenu, fait):
            self.dateDevoir = date
            self.typeDevoir = typeD
            self.contenuDevoir = contenu
            self.faitDevoir = fait
     
        def modifierDevoir(self, nouvelleDate, nouveauType, nouveauContenu, nouveauFait):
            self.dateDevoir = nouvelleDate
            self.typeDevoir = nouveauType
            self.contenuDevoir = nouveauContenu
            self.faitDevoir = nouveauFait
    Mon problème se situe au niveau des lignes 29 et et 37, 38 du programme principal au moment d'appeler mes méthodes.
    VS Code me dit qu'il n'a aucune valeur pour l'argument classe pourtant il me semble bien que je lui en passe un lors de l'appel des méthodes (avec maClasse en l'occurence)

    Pourriez vous éclairer ma lanterne je vous prie ?

    Cordialement

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Ledidic Voir le message
    Pourriez vous éclairer ma lanterne je vous prie ?
    Savoir si le code que vous écrivez avec un IDE ou n'importe quel autre éditeur de texte fonctionne (ou pas) est un verdict que seul l'interpréteur Python pourra donner lors de l'exécution du programme.
    De plus, les erreurs remontées par l'interpréteur Python seront les mêmes pour tout ceux qui voudront exécuter le programme (et ne dépendent ni de l'IDE, ni de sa configuration particulière).

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Mai 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Bonjour wiztricks,

    Je ne suis pas certain de bien comprendre votre réponse.

    Je suis tout à fait conscient que si VSCode me signale une erreur c'est qu'il y en a une. D'autant plus que sur Pycharm la même erreur est relevée.

    Ce que je ne comprend pas c'est pourquoi une telle erreur ? J'ai pourtant l'impression de passer en argument ce qui est nécessaire et malgré tout l'IDE me dit qu'il en manque.

    J'ai essayé d'appeler la méthode sauvegarderClasse directement dans le programme principal (donc sans passer par la classe)
    Et bien dans ce cas cela fonctionne.

    Du coup je dois faire une erreur dans la création de la méthode dans la classe peut etre au niveau du self ? Je suis perdu

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    C'est l'instance que tu dois utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                maClasse = mesCoursClasses.MesClasses(nom, effectif, couleur)
                # Sauvegarde de la classe
                maClasse.sauvegarderClasse(maClasse)
    Note que, si je suis bien ton code, chaque nouvelle classe sauvegardée supprimera la précédente. Est-ce voulu ?

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Ledidic Voir le message
    Je ne suis pas certain de bien comprendre votre réponse.
    Ben, recopiez chez vous le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def g():
        f()
     
    def f():
        1/0
     
    g()
    dans le fichier test.py.

    Si je l'exécute chez moi (avec l'interpréteur Python), çà sort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Traceback (most recent call last):
      File "test.py", line 8, in <module>
        g()
      File "test.py", line 3, in g
        f()
      File "test.py", line 6, in f
        1/0
    ZeroDivisionError: division by zero
    Et, à priori, si vous l'exécutez chez vous, vous devriez avoir la même chose.

    Bon d'accord, 1/0 on savait que çà allait planter mais c'est pour illustrer le tas d'informations que Python affiche pour permettre de retrouver l'erreur.

    Cette erreur là n'a rien à voir avec l'éditeur de texte ou l'IDE avec lequel vous avez écrit le programme... et si vous ne prenez pas la peine de poster le message d'erreur retourné par Python lorsqu'on exécute le code: on ne sait pas de quelle erreur vous parlez.

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

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Mai 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    C'est l'instance que tu dois utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                maClasse = mesCoursClasses.MesClasses(nom, effectif, couleur)
                # Sauvegarde de la classe
                maClasse.sauvegarderClasse(maClasse)
    Note que, si je suis bien ton code, chaque nouvelle classe sauvegardée supprimera la précédente. Est-ce voulu ?
    Merci pour ta réponse VinsS, je vais essayer cette correction au plus vite.
    Et non ce n'est certainement pas voulu je vais corriger urgemment.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Mai 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Merci à tous les deux pour votre temps un dimanche.
    Mon erreur est de l'histoire ancienne.

    C'était bien l'instance à utiliser, merci VinsS.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme lors de l'appel d'une methode
    Par doumbix dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/01/2013, 20h44
  2. Réponses: 0
    Dernier message: 14/04/2009, 16h58
  3. Erreur lors de l'appel d'une methode (Webservice)
    Par G_angel dans le forum Services Web
    Réponses: 1
    Dernier message: 19/06/2008, 12h14
  4. Erreur lors de l'appel d'une methode (Webservice)
    Par G_angel dans le forum ASP.NET
    Réponses: 0
    Dernier message: 04/06/2008, 15h02
  5. [Language]problème lors de l'appel d'une méthode
    Par Samanta dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2005, 13h03

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