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 :

Appel d'une méthode inexistante


Sujet :

Python

  1. #1
    Membre habitué Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Points : 190
    Points
    190
    Par défaut Appel d'une méthode inexistante
    Bonjour,

    une ch'tite question à 3 roubles :

    y a-t-il en python un équivalant à la 'method_missing' de ruby ?

    Peut on intercepter un appel à une méthode inexistante avant que l'exception ne soit levée ?
    Bien sûr on peut faire un try/except ou appeler callable mais ce n'est pas ce qui je veux...

    Pendant que j'y suis, peut on intercepter un accès à un membre inexistant ?

    Je suis allé voir dans le chapitre "data model" de la doc python, mais je ne suis pas sûr d'avoir tout compris...

    Hadrien
    [WinXP sp3 / Visual 2005 / Eclipse Ganymede / Python 2.6]
    Hadrien

  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
    Par rapport à ce que j'ai trouvé à propos de "method_missing", il n'y a pas d'équivalent en Python. Tu peux simuler ce comportement en surchargeant la méthode __getattr__.

  3. #3
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Pour l'accès à un membre existant, a priori rien qui soit vraiment de base en python, mais tu as un exemple ici en passant par une metaclass.

    http://code.activestate.com/recipes/198078/
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  4. #4
    Membre habitué Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Points : 190
    Points
    190
    Par défaut
    Et oui, __getattr__ permet d'obtenir le 'method_missing' de ruby !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Spam:
     
        def method_missing (self,*arg):
            print 'method missing !'
     
        def __getattr__ (self,name):
            return self.method_missing
    Avec ça, method_missing est appelée quand on invoque une métode qui n'existe pas...

    merci

    Hadrien
    [WinXP sp3 / Visual 2005 / Eclipse Ganymede / Python 2.6]
    Hadrien

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/06/2010, 00h51
  2. Intercepter l'appel d'une méthode inexistante ?
    Par mhalloum dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 11/08/2006, 00h58
  3. Réponses: 2
    Dernier message: 06/12/2005, 10h41
  4. Réponses: 6
    Dernier message: 27/05/2005, 16h43
  5. Comment connaitre l'appelant d'une méthode
    Par Alec6 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/07/2004, 15h51

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