Sahid Ferdjaoui Blog - Funraill Foundation Bienvenue, Log in - thème 2007 RC1

Powered by OpenSource Softwares

Outil de déboggage colaborative
reduire

Polymorphisme sous Python

le 17 mars 2007 par sahid

Introduction au polymorphisme sous Python

Presentation de Python

Python est un langage de programmation de haut niveau, orienté objet, multiplateforme, et Opensource (distribué sous GPL si je ne me trompe pas).

Python est un langage de programmation trop mal connu, et considéré comme un langage trop banal et simple pour etre appris correctement. Pour donner mon avis personnel je dirai que ca vient principalement du coté “langage de scrypt”, PHP et Javascrypt on connu les meme problemes.

Comme je le disais Python est portable, et un logiciel sous python peut tres facilement etre porté. Sa syntaxe permet de mettre en place des applications complexes avec un minimun d’efforts par rapport a un programme en C. Pour finir Python est orienté-objet, et tout dans python est objet…

Avant Prorpos

Bon cette petite introduction ne sera sans doute pas utile au debutant Python, mais ayant été confronté au probleme du polymorphisme j’ai pensé que ça pourrait etre intéressant d’en faire profiter vous mes lecteurs favoris (;, au cas ou un jour vous vous retrouviez confronté ce probleme sous python.

Polymorphisme sous Python

Pour commencer on va mettre en scene 3 classes A, B et C, elles comporteront toutes la methode printItSelf () et retourneront le nom de la classe auxquelles elles appartiennent.

  1. class A:
  2.     “”” Classe A ““”
  3.     printItSelf (self):
  4.         print “J’appartiens  [A]”;
  5.  
  6. class B:
  7.     “”” Classe B ““”
  8.     printItSelf (self):
  9.         print “J’appartiens  [B]”;
  10.  
  11. class C (A, B):
  12.     “”” Classe C, herite de A et B ““”
  13.     printItSelf (self):
  14.         print “J’appartiens  [C]”;

Nous allons maintenant voir comment appeler la methode printItSelf de A et B a partir de notre instance de C

  1. C obj # Instance de C
  2.  
  3. A.printItSelf (obj)
  4. ## (out) : J’appartiens  [A]
  5.  
  6. B.printItSelf (obj)
  7. ## (out) : J’appartiens  [B]
  8.  

Assez surprenant comme methode … ( ; en fait on doit passer l’objet créé en parametre de notre methode, et appeler la methode a partir du nom de la classe, mais en y reflechissant ca peut paraitre logique vu la maniere dont on définit les classes sous Python. Il peut etre interessant pour ceux qui souhaitent apprendre un langage de programmation de commencer par Python (: ! de plus mixé avec la bibliotheque pyGTK on arrive d’excellents programmes de qualité merci au channel #gnomefr pour l’astuce.

5 commentaires pour Polymorphisme sous Python

  1. Matt dit :

    Ah je savais pas que Python supportait le polymorphisme, ça c’est cool c’est rare :)

    Merci sahid ;)

  2. Sahid dit :

    Oui,
    J’ai vu qu’on parle de surcharge de fonctions pour python mais pas de polymorphisme pure.

    Enfin bon comme ca c dis ( ;

  3. steve dit :

    # 1.
    class A:
    2.
    ???? Classe A ?????
    3.
    printItSelf (self):
    4.
    print ??J??appartiens [A]?;
    5.

    6.
    class B:
    7.
    ???? Classe B ?????
    8.
    printItSelf (self):
    9.
    print ??J??appartiens [B]?;
    10.

    11.
    class C (A, B):
    12.
    ???? Classe C, herite de A et B ?????
    13.
    printItSelf (self):
    14.
    print ??J??appartiens [C]?;

    Nous allons maintenant voir comment appeler la methode printItSelf de A et B a partir de notre instance de C

    1.
    C obj # Instance de C( compren pas le “obj”)
    2.

    3.
    A.printItSelf (obj)
    4.
    ## (out) : J??appartiens [A]
    5.

    6.
    B.printItSelf (obj)
    7.
    ## (out) : J??appartiens [B]
    8.

    j’suis un petit novice et j’ai besoin que tu précise quoi correspond le “obj” qui apparaitr aprÚs le c ligne 1, merci pour ta réponse

  4. sahid dit :

    Salut Steve,

    obj, est un objet de la classe C.

    En faite tu passes en premier paramÚtre de ta methode l’objet créer,
    et si tu remarques bien, pour chacune des méthodes d’une classe en python
    on attend obligatoirement un paramÚtre (self par convention).

    sahid

  5. loic dit :

    priori il faut remplacer

    C obj # Instance de C

    par

    obj = C() # Instance de C

    et de plus tu donnes un exemple pour:

    “Nous allons maintenant voir comment appeler la methode printItSelf de A et B a partir de notre instance de C”

    ce qui permet de résoudre un problÚme posé par l’héritage multiple, mais qui n’est pas forcément lié au polymorphisme …

    plus d’explication sur le polymorphisem par exemple l”daresse: http://sebsauvage.net/comprendre/objet/objet_heritage.html

Tu peux laisser un commentaire pour Polymorphisme sous Python