Polymorphisme sous Python
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.
-
class A:
-
“”” Classe A ““”
-
printItSelf (self):
-
print “J’appartiens [A]”;
-
-
class B:
-
“”” Classe B ““”
-
printItSelf (self):
-
print “J’appartiens [B]”;
-
-
class C (A, B):
-
“”” Classe C, herite de A et B ““”
-
printItSelf (self):
-
print “J’appartiens [C]”;
Nous allons maintenant voir comment appeler la methode printItSelf de A et B a partir de notre instance de C
-
C obj # Instance de C
-
-
A.printItSelf (obj)
-
## (out) : J’appartiens [A]
-
-
B.printItSelf (obj)
-
## (out) : J’appartiens [B]
-
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.
Tableau de bord




17 mars 2007 at 18:27
Ah je savais pas que Python supportait le polymorphisme, ça c’est cool c’est rare :)
Merci sahid ;)
19 mars 2007 at 11:40
Oui,
J’ai vu qu’on parle de surcharge de fonctions pour python mais pas de polymorphisme pure.
Enfin bon comme ca c dis ( ;
18 avril 2007 at 20:48
# 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
19 avril 2007 at 13:58
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
17 octobre 2007 at 14:50
priori il faut remplacer
par
et de plus tu donnes un exemple pour:
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