Sites


Initiation à python

Modules : partage de fonctions entre programmes

Un module est une classe ou ensemble de classe qui sera spécifiquement utilisé comme ressources dans d'autres programmes. Il a en général été conçu comme tel et s'avère très pratique lors de tâches répétitives.
La règle veut que les modules portent le même nom que la classe qu'ils contiennent. Ainsi MaClasse.py serait le nom de module courant pour le fichier contenant la classe MaClasse. Bien sûr, le module pouvant en contenir plusieurs, cette règle est adaptable.
Au niveau du fichier contenant les classes il est fréquent d'ajouter une condition de test d'exécution (en général en fin de fichier) :

if __name__ == "__main__"
    pass
    # autres instructions au lieu de pass  

Le but de cette condition est de définir ce qui doit être exécuté si le module est exécuté comme corps principal du programme, sinon, cette partie est simplement ignorée.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

class MaClasse:
    def __init__(self, nom):
            self.essai="Bonjour"
            self.nom=nom
    def affiche(self):
            print self.essai, self.nom

class MaClasseFille(MaClasse):
    def affiche(self):
            print self.nom
                                                  
if __name__ == "__main__":
    pass
  

Enregistrez ce fichier avec l'extension .py

Utilisation du module

Une fois votre module créé, vous pourrez alors l'importer pour le réutiliser dans tous vos projets  :

import MaClasse
objet = MaClasse.MaClasseFille("cedric")
objet.affiche()  

Commentons un peu ce qui se passe ici :

  • on commence par importer le module on utilisant son nom, sans l'extension. Par défaut, python cherche dans le PYTHONPATH et dans le répertoire courants
  • on instancie les objets en utilisant le nom du module puis le nom de la classe (ce qui n'était pas nécessaire jusqu'ici)
  • enfin, l'instance  peut alors jouer son rôle normalement.

La méthode import va charger l'ensemble du fichier en vue de son exploitation ultérieure.

from param_classe import MaClasseFille
objet = MaClasseFille("Cedric")
objet.affiche()
> Cedric 

Si le gain ici n'est pas très important à cause de la simplicité de notre fichier module, remarquez qu'avec cette façon de faire, il n'est pas nécessaire de nommer le module lors de l'instanciation. Si cela a l'avantage de faire saisir un peu moins de texte, si vous devez charger plusieurs modules, il faudra être certain qu'il n'y aura pas de conflit dans le nom des classes et méthodes utilisées, problème qui est résolu avec l'utilisation d'import seul et la préservation de son espace de nom.

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.