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 :

Signatures des méthodes [Fait]


Sujet :

Python

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Par défaut Signatures des méthodes
    Bonsoir à tous,

    voilà, dans la suite de ma découverte de python ; voici une nouvelle question que je me pose : est il possible d'avoir une même méthode avec différentes signatures ?

    Du style

    def find (id):
    .....

    def find (name):
    ....

    avec id un integer et name une chaine de caractères ?

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    ce n'est pas possible
    par contre tu peux faire une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def _find1(id): ...
    def _find2(name): ...
     
    def find(**keys):
        if 'id' in keys: _find1(id)
        elif 'name' in keys: _find2(name)
    et tu appeles la fonction de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    find( id = 5)
    find( name = 'toto')

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Par défaut
    ok, merci ; je vais faire ça.

    (c'est là qu'on se rend compte que des choses tellement pratique dans d'autres langages nous manquent ;-) )


    Merci

  4. #4
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    On peut également profiter du typage dynamique de Python pour ne créer qu'une seule fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def find(data):
        if type(data) == int:
            print "c'est une recherche par l'id"
        elif type(data) == str:
            print "c'est une recherche par le nom"

  5. #5
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par szdavid
    (c'est là qu'on se rend compte que des choses tellement pratique dans d'autres langages nous manquent ;-) )
    La surcharge de fonctions (overloading) n'existe pas dans les langages de scripts à typage dynamique, pour la simple raison que le compilateur est incapable de deviner à la compilation le type de l'argument et donc la fonction à appeler.

    En plus des solutions précédentes, tu as aussi la possibilité de créer des classes correspondant à tes ID et Name, et de leur définir une méthode find à chacune.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

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

Discussions similaires

  1. Signature des méthodes redéfinies
    Par Yiempia dans le forum Langage
    Réponses: 18
    Dernier message: 03/10/2013, 17h41
  2. Editeur de texte - liste des méthodes
    Par Carlito_superheros dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 30/03/2005, 12h52
  3. [Info]descriptif des méthode ?
    Par java_math dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 01/06/2004, 08h36
  4. afficher la signature des opérations dans XDE
    Par ChristopheH dans le forum Rational
    Réponses: 1
    Dernier message: 24/05/2004, 15h41

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