Simplifier vos imports Python : Comment importer par classe, pas par fichier
Lorsque vous travaillez avec Python, en particulier dans des projets plus importants, gérer les imports de manière efficace devient crucial. Vous pourriez vous retrouver à vouloir accéder aux classes directement depuis leur package plutôt que depuis leurs fichiers respectifs. Cette méthode peut rendre votre code plus propre et plus facile à lire. Dans cet article de blog, nous allons examiner comment réaliser cela dans vos projets Python avec une structure simple.
Le Problème
Considérons la structure de fichiers suivante pour votre application Python :
app/
app.py
controllers/
__init__.py
project.py
plugin.py
Dans ce cas, si vous définissez une classe Project
dans project.py
, l’importation dans app.py
ressemblerait traditionnellement à ceci :
from app.controllers.project import Project
Cependant, que faire si vous souhaitez que votre instruction d’importation soit plus courte et plus propre ? Vous pouvez vouloir l’importer comme ceci :
from app.controllers import Project
Cela simplifie non seulement vos déclarations d’importation, mais garde également votre code plus organisé. La question se pose : Comment pouvez-vous mettre cela en place ?
La Solution
Pour rationaliser votre processus d’importation et permettre l’importation de classes directement depuis un package, vous devez apporter une légère modification à votre fichier __init__.py
situé dans le répertoire controllers
.
Guide Étape par Étape
-
Ouvrez le fichier
__init__.py
: Ce fichier est généralement utilisé pour initialiser votre package Python et vous permet de contrôler ce qui est importé lorsque vous importez le package lui-même. -
Ajoutez l’instruction d’importation : Pour permettre à la classe
Project
d’être importée directement depuiscontrollers
, ajoutez la ligne suivante à votre__init__.py
:from project import Project
Cela indique à Python d’importer la classe
Project
depuisproject.py
automatiquement lorsque vous importez le packagecontrollers
. -
Ajustez pour des imports absolus : Avec l’introduction de Python 2.7 et au-delà, les imports absolus deviennent le mode par défaut pour les imports. Pour éviter d’éventuels conflits avec un module de niveau supérieur qui pourrait partager un nom (comme
project
), il est bénéfique d’inclure un point pour indiquer un import relatif. Ainsi, vous modifieriez votre import dans__init__.py
pour :from .project import Project
Cela signifie que la classe
Project
est importée depuis le package courant (controllers
).
Points Clés à Retenir
- En modifiant votre
__init__.py
, vous rationalisez considérablement vos imports. - L’utilisation du point (.) devant le nom du module garantit que vous faites référence au bon module, ce qui est particulièrement utile dans des applications plus importantes avec des conflits de noms possibles.
- Cette pratique améliore non seulement la lisibilité de votre code, mais vous aide également à maintenir une structure claire à mesure que votre projet se développe.
Conclusion
En suivant les étapes simples décrites ci-dessus, vous pouvez améliorer vos pratiques de codage en Python en rendant vos imports plus directs. Cette technique non seulement vous fait gagner du temps, mais contribue également à un code propre et maintenable. N’oubliez pas qu’une application bien structurée commence par une gestion efficace de vos imports !
N’hésitez pas à expérimenter cette approche dans vos propres projets et à voir la différence que cela fait !