Articles récents
Python : Programmation orientée objet
Comme tout langage digne de ce nom, Python propose évidemment une programmation orientée objet. D'ailleurs, on retrouve la POO un peut partout dans les librairies du framework de base.
Je ne reviendrais pas sur les bases de ce type de programmation, considérant que ces notions sont connus du lecteur. En revanche, je vous donnerai quelques exemples pour vous montrer comment la POO est implémentée sous Python.
![]() |
Ce chapitre est un fork de la documentation fournie par Gérard Swinnen sur le site développez.com . Elle est très complète et détaillée, aussi j'ai jugé intéressant de la résumer pour ceux qui comme moi, se rebute à la lecture d'une documentation de plus de 300 pages. Ceci dit, si vous souhaitez aller plus loin, n'hésiter à la récupérer au format pdf. |
1)Les classes
Voici un exemple, on notera les attributs définis dans le constructeur. N'oubliez de mettre l'indentation:Et pour l'utilisation:
2)HĂ©ritage et polymorphisme
Voici un exemple d'héritage:Un autre exemple qui va nous permettre d'expliquer le polymorphisme:
Ce qui affichera
Le script reproduit à la page suivante génère des objets Atome() et des objets Ion(). Dans notre programmation, la classe qui définit les objets Ion() sera donc une classe dérivée de la classe Atome() : elle héritera d'elle tous ses attributs et toutes ses méthodes, en y ajoutant les siennes propres.
L'une de ces méthodes ajoutées (la méthode affiche()) remplace une méthode de même nom héritée de la classe Atome(). Les classes Atome() et Ion() possèdent donc chacune une méthode de même nom, mais qui effectuent un travail différent. On parle dans ce cas de polymorphisme. On pourra dire également que la méthode affiche() de la classe Atome() a été surchargée.
3)Module de classe
Voyons comment on réalise un module de classe. Voici un exemple:Donc pour l'utiliser:
On voit dans ce script que la classe Carre() est construite par dérivation à partir de la classe Rectangle() dont elle hérite toutes les caractéristiques. En d'autres termes, la classe Carre() est une classe fille de la classe Rectangle(). Vous pouvez remarquer encore une fois que le constructeur de la classe Carre() doit faire appel au constructeur de sa classe parente (rectangle.__init__(self, ...) ), en lui transmettant la référence de l'instance (self) comme premier argument.
Quant Ă l'instruction :
if __name__ == "__main__":
placée à la fin du module, elle sert à déterminer si le module est « lancé » en tant que programme autonome (auquel cas les instructions qui suivent doivent être exécutées), ou au contraire utilisé comme une bibliothèque de classes importée ailleurs. Dans ce cas cette partie du code est sans effet.