Répondre

12

Placez un fichier __init__.py vide dans le répertoire Models.

Ensuite, dans votre application; sans doute d'un niveau, vous faites référence à des modules dans le répertoire des modèles comme celui-ci:

import Models 

et faire quelque chose avec elle comme ceci:

Models.my_model.MyClassName 

Vous pouvez également utiliser le mot-clé from comme ceci:

from Models import my_model 

et référence comme celui-ci:

my_model.MyClassName 

Si vous avez seulement besoin d'une méthode à partir d'un module, vous pouvez aussi le faire:

from Models.my_model import my_method_name 
my_method_name() 

lien obligatoire à l'documentation.

+3

J'ai voté pour, avec l'idée que les noms de modules et de paquets devraient être en minuscules. et que les répertoires avec des fichiers ____init____.py sont des paquets et non des modules. –

+0

Le problème avec la division des classes en différents fichiers en Python est que je dois ajouter le préfixe du module où que je l'utilise. C'est lourd et ça n'arrive pas en C# –

+0

@Jader: Vous pouvez éviter de faire cela en important les classes spécifiques dont vous avez besoin explicitement avec 'from module import ClassName'. – bernie

4

En réponse à votre commentaire sur la réponse d'Adam, en ce qui concerne 10 importations pour 10 classes, n'oubliez pas qu'il n'est pas nécessaire d'avoir une classe par module en Python. Les modules doivent être organisés par fonctionnalité, de sorte que vous pouvez regrouper les classes liées dans un seul fichier si cela a du sens.

Si vous voulez encore faire toutes les classes importables en une seule fois, vous pouvez les importer tous dans le fichier __init__.py lui-même en utilisant la syntaxe from submodule import Class, puis il suffit d'importer le module contenant - import mainmodule et se référer à mainmodule.Class1 etc, ou même utiliser from mainmodule import Class1, Class2, Class3 pour importer les classes directement dans votre espace de noms et s'y référer directement.