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 :

Récupérer le prototype d'une fonction [Fait]


Sujet :

Python

  1. #1
    uaz
    uaz est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Points : 13
    Points
    13
    Par défaut Récupérer le prototype d'une fonction
    J'ai un problème pour récupérer le prototype (signature) d'une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def main(arg1, arg2=3, arg5="meuh"):
        pass
     
    def main6():
        import inspect
     
        liste = inspect.getargspec(main)
        print liste
    Ca me sort :

    >>> (['arg1', 'arg2', 'arg5'], None, None, (3, 'meuh'))

    Jusque là tout va bien.
    Sauf qu'il me faut la signature d'une fonction contenue dans une classe, et apparemment on ne peut pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def main6():
        import Parametres as p
        import inspect
     
        param = p.Parametres()  
        liste = inspect.getargspec(param.getParamVal)
    p : module Parametres
    param : instance de classe Parametres
    getParamVal() : fonction de cette classe

    Output de Python:

    >>> Traceback (most recent call last):
    File "C:\PROGRA~1\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in __main__.__dict__
    File "P:\travail\test\test2.py", line 159, in ?
    File "P:\travail\test\test2.py", line 145, in main6
    File "C:\Program Files\lib\inspect.py", line 618, in getargspec
    if not isfunction(func): raise TypeError, 'arg is not a Python function'
    TypeError: arg is not a Python function


    Ai-je commis une erreur quelquepart ?

    Merci de me venir en aide !

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Il semble que la fonction qui est associée à la classe de ton objet ne soit pas reconnu comme une fonction

    Je ne suis pas sûr du tout que ca marche mais essaie donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inspect.getargspec(P.Parametres.getParamVal)

  3. #3
    uaz
    uaz est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    def main6():
        import Parametres as p
        import inspect
     
        param = p.Parametres()
        print inspect.ismethod(param.getParamVal)
        print inspect.isfunction(param.getParamVal.im_func)    
        print inspect.isfunction(main6)
     
        liste = inspect.getargspec(p.Parametres.getParamVal.im_func)
        print liste
    => FAQ: http://python.developpez.com/faq/?pa...#FuncPrototype


    >>>
    1
    1
    1
    (['self', 'cle'], None, None, None)


    Alors en fait Python fait la différence entre méthode et fonction, donc il faut utiliser l'attribut im_func qui contient une référence sur l'objet représentant la méthode en tant que fonction (!)

    Bon, une fois de plus j'ai trouvé les réponses tout seul
    Merci quand même

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

Discussions similaires

  1. [Prototype] [AJAX] Récupérer la réponse / Lancer une fonction
    Par Shirraz dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 07/04/2009, 06h50
  2. Réponses: 6
    Dernier message: 08/06/2006, 10h07
  3. Récupérer le prototype d'une fonction exportée
    Par JulienDuSud dans le forum C++
    Réponses: 10
    Dernier message: 07/05/2006, 22h12
  4. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41
  5. Réponses: 3
    Dernier message: 09/03/2006, 15h12

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