108 Stimmen

Wie sollte ich Python-Quellcode organisieren?

Ich fange gerade mit Python an (es wird höchste Zeit, dass ich es ausprobiere), und ich suche nach bewährten Verfahrensweisen.

Mein erstes Projekt ist eine Warteschlange, die Befehlszeilen-Experimente in mehreren Threads ausführt. Mein main.py-Datei wird sehr lang, und ich möchte sie aufteilen. Generell suche ich nach: Wie organisieren Python-Programmierer mehrere Quellcodedateien? Gibt es eine bestimmte Struktur, die für euch funktioniert?

Meine spezifischen Fragen sind:

  1. Sollte jede Klasse in einer separaten Datei sein?
  2. Wie sollte ich Unittests im Verhältnis zum Quellcode organisieren?
  3. Wo sollte ich Dokumentationskommentare platzieren, insbesondere die für die Befehlszeilenbedienung?
  4. Wenn ich mehrere Verzeichnisse verwende, wie importiere ich Klassen zwischen ihnen?

Ich kann wahrscheinlich einige meiner eigenen Schlussfolgerungen hier durch Ausprobieren ziehen, aber ich würde lieber von etwas Gutem ausgehen.

35voto

Drew Noakes Punkte 282438

Der Artikel, auf den Eric hingewiesen hat, ist großartig, weil er Details zur Organisation großer Python-Codebasen behandelt.

Wenn Sie über Google hierher gelangt sind und herausfinden möchten, wie Sie eine große Quelldatei in mehrere, leichter zu handhabende Dateien aufteilen können, fasse ich den Prozess kurz zusammen.

Angenommen, Sie haben derzeit alles in einer Datei namens main.py:

  • Erstellen Sie eine weitere Quelldatei im selben Ordner (nennen wir sie für dieses Beispiel utils.py)
  • Verschieben Sie alle Klassen, Funktionen, Anweisungen usw. aus main.py in utils.py
  • Fügen Sie in main.py eine Zeile oben ein: import utils

Konzeptionell erstellt dies ein neues Modul namens utils in einer anderen Quelldatei. Sie können es dann überall importieren, wo es benötigt wird.

8voto

AutomatedTester Punkte 21864

Die Art und Weise, wie Sie Ihren Code und Ihre Tests organisieren sollten, ist genau die gleiche wie für jede OO-Sprache.

Antworten von dem, wie ich es mache. Es muss nicht richtig sein, aber es funktioniert für mich.

  1. Hängt davon ab, wie Ihre Funktionen aufgeteilt sind. Für meine Haupt-Python-App habe ich eine Datei mit Klassen für die Einstiegspunkte und dann Pakete mit verschiedenen Funktionsbits.
  2. Ich benutze PyDev für Eclipse und organisiere es so, wie ich es für Java tun würde.
>  Arbeitsbereich
>     |
>     |-Src
>     |   |-Paket1
>     |   |-Paket2
>     |   |-main.py
>     |-Test
>         |-TestPaket1
>         |-TestPaket2
  1. Verwenden Sie überall Doc-Strings, um alles im Blick zu behalten.
  2. Nachdem Sie sichergestellt haben, dass die relevanten __init__.py -Dateien in den Ordnern sind, ist es nur ein einfacher Fall von from module import class.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X