faciliter les imports - danger(s) de cette méthode
Bonjour
J'écris régulièrement des packages qui sont utilisés par d'autres personnes, avec plusieurs modules et, parfois, une (petite) arborescence.
Pour éviter que les utilisateurs aient à connaître très précisément où les classes et les fonctions sont définies et à faire des imports "compliqués", j'ai pris l'habitude d'importer, dans le fichier __init__.py du package ces classes et fonctions qu'ils auront à utiliser.
Par exemple :
Code:
1 2 3 4 5
|
+ package
|__ __init__.py
|__ module_1.py
|__ module_2.py |
avec module_1.py :
Code:
1 2
| class Classe_1(object):
pass |
module_2.py :
Code:
1 2
| class Classe_2(object):
pass |
__init__.py :
Code:
1 2 3
| from module_1 import Classe_1
from module_2 import Classe_2
__all__ = ['module_1','module_2'] |
Cela permet alors d'écrire dans les scripts utilisant le package :
Code:
1 2 3 4
| from package import Classe_1, Classe_2
# plutot que
# from package.module_1 import Classe_1
# from package.module_2 import Classe_2 |
Ca fonctionne mais je ne suis pas sur de bien mesurer les effets de bord possibles ou les inconvénients de cette méthode.
Avez-vous un avis là dessus ?