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 :

Problème pour appeler une méthode d'une autre classe


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 30
    Points
    30
    Par défaut Problème pour appeler une méthode d'une autre classe
    Bonjour,

    Je cherche simplement à accéder à une fonction d'une classe qui se trouve dans un autre fichier et je n'y arrive toujours pas. Je précise quand même que les deux fichiers sont aux même niveau de répertoire.

    Le fichier que je tente d'accéder s'appèle 'stonefree.py' et la seule classe de se fichier s'appèle 'StoneFree'. La fonction de cette classe que je tente d'accéder s'appèle 'scan_it_all()'.
    Après avoir essayer n'importequelle syntaxe, je vous donne ce que je croit 'devrait' à priori fonctionner.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from stonefree import * 
    stf = StoneFree()
    stf.scan_it_all
    Sauf que là, avec ça, j'obtiens rien de particulier. Le programme compile sans erreur, mais la fonction ne s'exécute pas, comme si elle n'était pas accédée.

    et là, malgré une recherche peu convaincante sur Google, je ne sais plus quoi faire... . Des idées?

    Merci d'avance,
    rc

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    C'est une faute de copie l'oubli des parenthèses après stf.scan_it_all ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    en fait, si je rajoute des parenthèses, j'obtiens le message d'erreur suivant :
    TypeError: scan_it_all takes no arguments(1 given)
    et la je vois pas non plus ce que ça pourrait être.

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Je pense que ta fonction scan_it_all ne doit pas etre appellée de cette facon.

    essaye scan_it_all() seul

    c'est juste un supposition car faire a.b signifie que 'a' est un argument de 'b'

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Je n'aveais pas bien lu.

    Verifie si pour ta fonction scan_it_all tu la bien define avec un 'self'

    exemple:

    def scan_it_all(self):

    ainsi il acceptera un argument

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 30
    Points
    30
    Par défaut
    En fait, tu as raison, je viens de rajouter self dans la définition et tout marche impeccable.
    Mais sinon, quelle en serait la raison?

    En tout cas merci beaucoup,
    rc

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    Citation Envoyé par tse_tilky_moje_imja
    Mais sinon, quelle en serait la raison?
    Lorsque tu fait : stf.scan_it_all , ce n'est pas un appel à la fonction. Fait un print et tu verras qu'en fait c'est un pointeur sur ta fonction (en quelques sorte).
    Pour appeler la fonction, tu es obliger de faire stf.scan_it_all (). Seulement comme cette fonction/methode appartiens à une classe, python lui passe en premier paramètre et sans te demander ton avis, l'instance de ta classe. Tu es donc obligé dans la déclaration de ta fonction, de mettre "self" qui sera la référence à ton instance dans ta classe (l'équivalent du "this" en C++ ou en Java).
    Relit un coup le tutorial pour créer des classes, c'est expliqué !
    "There are two major products that come out of Berkeley: LSD and UNIX.
    We don't believe this to be a coincidence."
    - Jeremy S. Anderson

    La FAQ Python
    Les cours et tutoriels pour apprendre Python
    Le Forum Python

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    En hyper simple,

    si tu definies une fonction dans une class, t'es obligé de rajouter ce self, suivi des paramètres que tu veux y mettre.

    sinon ben la machine ne comprend pas que la fonction est une fonction seulement de cette classe et ça me le zouc quadn tu l'appelles.

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

Discussions similaires

  1. Problème pour utiliser la méthode d'une classe
    Par Freddrick dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/09/2012, 18h43
  2. Accès à une méthode d'une form depuis une autre autre form
    Par arngrimur dans le forum Windows Forms
    Réponses: 16
    Dernier message: 13/01/2012, 15h45
  3. [PHP 5.3] [POO] Appel d'une méthode dans une méthode
    Par yann18 dans le forum Langage
    Réponses: 6
    Dernier message: 20/10/2011, 09h56
  4. Appeler une méthode d'une applet dans une jsp
    Par salmoucha10 dans le forum Applets
    Réponses: 1
    Dernier message: 11/01/2011, 19h25
  5. modifier un élément d'une form dans une méthode d'une autre form
    Par baldebaran dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/08/2009, 13h59

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