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

  1. 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.

  2. Ajoutez l’instruction d’importation : Pour permettre à la classe Project d’être importée directement depuis controllers, ajoutez la ligne suivante à votre __init__.py :

    from project import Project
    

    Cela indique à Python d’importer la classe Project depuis project.py automatiquement lorsque vous importez le package controllers.

  3. 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 !