I ont une structure de répertoire:importations Python par le module de dossier
example.py
templates/
__init__.py
a.py
b.py
a.py
et b.py
ont une seule classe, le même nom que le fichier (parce qu'ils sont des modèles de guépard). Pour des raisons purement style, je veux être en mesure d'importer et d'utiliser ces classes dans example.py
comme ceci:
import templates
t = templates.a()
En ce moment je fais cela en ayant cela dans le du dossier modèle __init__.py
:
__all__ = ["a", "b"]
from . import *
Cependant , cela semble assez pauvre (et peut-être superflu), et ne même pas faire ce que je veux, comme je dois utiliser les classes comme ceci:
t = templates.a.a()
pensées?
merci! des pensées sur si ce que j'essaye de faire/ce que j'ai maintenant est une bonne idée du tout? – colinmarc
@colinmarc, J'approuve votre scepticisme quant à l'utilisation d'une telle introspection (profonde)/(légère) métaprogrammation dans le code de production, mais vous n'avez pas vraiment d'alternative ici - les fichiers 'a.py' & c avec classe 'a' sont (je crois) un guépard donné, et demander aux utilisateurs de toujours faire' à partir de modèles importer un '(& c) puis utiliser' aa() '(& c) se sent quelque peu redondant (je pourrais y aller, mais seulement parce que je suis un évangéliste pour "toujours importer un ** module ** - ** jamais ** un paquet, ** jamais ** rien de _inside_ un module" et un ennemi juré de 'import *' ...; -) - la plupart des gens sont plus raisonnables! -) –
@colinmarc, bien sûr, si vous pouvez avoir toutes les classes dans un 'template.py' à la place du répertoire/template' template' actuel, ce sera beaucoup plus simple. –