Antwort

12

Setzen Sie eine leere __init__.py Datei in das Modellverzeichnis.

Dann in Ihrer App; vermutlich eine Ebene nach oben, verweisen Sie Module in dem Modellverzeichnis wie folgt aus:

import Models 

und etwas tun, damit wie folgt aus:

Models.my_model.MyClassName 

Sie können auch die from Schlüsselwort wie folgt verwenden:

from Models import my_model 

und Referenz wie folgt aus:

my_model.MyClassName 

Wenn Sie nur eine Methode von einem Modul benötigen, können Sie auch dies tun:

from Models.my_model import my_method_name 
my_method_name() 

obligatorischen Link zum documentation.

+3

Ich habe dies gewählt, mit der Cavet, dass Modul und Paketnamen Kleinbuchstaben sein sollten. und diese Verzeichnisse mit ____init____.py Dateien sind Pakete nicht Module. –

+0

Das Problem mit der Aufteilung von Klassen in verschiedene Dateien in Python ist, dass ich das Modul Präfix hinzufügen muss, wo immer ich es verwende. Dies ist umständlich und passiert nicht in C# –

+0

@Jader: Sie können dies vermeiden, indem Sie die spezifischen Klassen importieren, die Sie explizit mit 'from module import ClassName' benötigen. – bernie

4

beschrieben. Als Antwort auf Ihre Antwort auf Adams Antwort bezüglich 10 Importe für 10 Klassen, vergessen Sie zunächst nicht, dass es keine Klasse pro Klasse gibt Modul in Python. Module sollten nach Funktionalität organisiert sein, sodass Sie verwandte Klassen in einer einzigen Datei gruppieren können, wenn dies sinnvoll ist.

Wenn Sie immer noch in einem Rutsch importierbaren alle Klassen machen wollte, könnte man sie alle in der __init__.py Datei importieren selbst die from submodule import Class Syntax verwenden, importieren Sie dann nur das enthalten Modul - import mainmodule und beziehen sich auf mainmodule.Class1 usw., oder sogar verwenden , um die Klassen direkt in Ihren Namespace zu importieren und direkt auf sie zu verweisen.

Verwandte Themen