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 :

Python et le polymorphisme [Fait]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Python et le polymorphisme
    Bonsoir,
    J'ai eu à plusieurs reprises l'occasion d'utiliser python de manière basique pour administrer mon systeme. J'était autodidacte et j'ai toujours codé "à la C" sans vraiment utiliser la POO. Depuis peu j'ai des cours de java de par ma formation en IUT et j'ai avec découvert la POO. J'aimerais savoir pourquoi python ne gère pas le polymorphisme, n'ayant jamais fait de cours sur la "programmation de langages", je me demandais si ça venais d'un choix des créateurs du python ou une limitation technique.
    Merci de m'éclaircir un peu.

  2. #2
    Expert éminent sénior
    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 : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Ne maîtrisant pas bien les termes de programmations, j'suis allé faire un tour sur le web pour voir exactement ce qu'on appelait polymorphisme
    Si j'ai bien compris, il y a 3 polymorphismes (ad hoc, d'héritage et paramétrique):
    Le polymorphisme ad hoc est accepté par Python (surcharge des opérateursà
    Alors Python accepte également le polymorphisme d'héritage
    Par contre il n'accepte pas le polymorphisme paramétrique (venant du Delphi, c'était très pratique je trouve); cela peut peut-être venir du fait de la dynamicité des paramètres. En même temps, on peut aussi s'en sortir en créant une fonction qui récupère un dictionnaire en paramètre puis traite ce dictionnaire et appelle les sous-fonctions adéquates dépendant donc des clés donnés dans le dictionnaire

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Oui c'est de la dernière dont je parlais, mais on arrive à s'en sortir en mettant des paramètres comme truc=xxx qui donne une valeur par defaut à la variable si le paramètre n'est pas donné.

  4. #4
    Expert éminent sénior
    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 : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Citation Envoyé par Poischack
    Oui c'est de la dernière dont je parlais, mais on arrive à s'en sortir en mettant des paramètres comme truc=xxx qui donne une valeur par defaut à la variable si le paramètre n'est pas donné.
    nan plutôt une fonction du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def Mafonction(** keys): 
        if 'unstr' in keys: _Fonctionstr(keys['unstr'])
        if 'unint' in keys: _Fonctionint(keys['unint'])
        ...
     
    def _Fonctionstr(unstr): ...
    def _Fonctionint(unint): ...
    ou keys est un dictionnaire. Donc tu peux appeler Mafonction avec les paramètres que tu veux puis tu traite le dictionnaire keys pour en retirer les paramètres qui t'intéressent

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Juste un point de vocabulaire, on parlera de surcharge de fonctions plutôt de de polymorphisme paramétrique (moins courant).
    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

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

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 35
    Points
    35
    Par défaut
    Je ne suis pas d'accord.

    La surcharge est de le faite de donner une nouvelle définition à une fonction.
    Le polymorphisme est le fait de donner plusieurs définitions à une même fonction.

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par GrandFather Voir le message
    Juste un point de vocabulaire, on parlera de surcharge de fonctions plutôt de de polymorphisme paramétrique (moins courant).
    A bon, pour moi, le polymorphisme paramétrique correspondait plutôt à quelque chose comme les templates de C++ ou les génériques de Java 5. Les possibilités de programmation générique offertes par ce type de polymorphisme peuvent être reproduite en Python ce qu'on appelle le "Duck typing".

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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

Discussions similaires

  1. [langage] traduction d'un fonction python en perl
    Par ay_pepito dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2007, 15h06
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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