web-dev-qa-db-de.com

Wie soll ich den Python Quellcode organisieren?

Ich beginne mit Python (es ist höchste Zeit, es auszuprobieren) und suche nach bewährten Methoden.

Mein erstes Projekt ist eine Warteschlange, in der Befehlszeilentests in mehreren Threads ausgeführt werden. Ich fange an, eine sehr lange main.py - Datei zu bekommen, und ich würde sie gerne auflösen. Im Allgemeinen suche ich: Wie organisieren python Programmierer mehrere Quelldateien? Gibt es eine bestimmte Struktur, die für Sie funktioniert?

Meine spezifischen Fragen umfassen:

  1. Sollte sich jede Klasse in einer eigenen Datei befinden?
  2. Wie sollte ich Komponententests in Bezug auf den Quellcode organisieren?
  3. Wo soll ich Doc-Kommentare ablegen, insbesondere für die Befehlszeilenoperation?
  4. Wie importiere ich Klassen zwischen mehreren Verzeichnissen?

Ich kann hier wahrscheinlich einige meiner eigenen Schlussfolgerungen durch Ausprobieren ziehen, aber ich gehe lieber von etwas Gutem aus.

92

Das Artikel, auf den Eric hingewiesen hat to ist fantastisch, da es Details zum Organisieren großer Python Codebasen abdeckt.

Wenn Sie von Google hier gelandet sind und herausfinden möchten, wie Sie eine große Quelldatei in mehrere, besser verwaltbare Dateien aufteilen können, fasse ich den Vorgang kurz zusammen.

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

  • Erstellen Sie eine weitere Quelldatei im selben Ordner (nennen wir unsere utils.py für dieses Beispiel)
  • Verschieben Sie alle benötigten Klassen, Funktionen, Anweisungen usw. aus main.py into utils.py
  • Im main.py füge oben eine einzelne Zeile hinzu: import utils

Konzeptionell bedeutet dies, ein neues Modul mit dem Namen utils in einer anderen Quelldatei zu erstellen. Sie können es dann überall dort importieren, wo es benötigt wird.

27
Drew Noakes

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 der Art, wie ich es mache. Es mag nicht richtig sein, funktioniert aber für mich

  1. Hängt davon ab, wie Ihre Funktionalität aufgeteilt ist. Für meine Haupt-App python habe ich 1 Datei mit Klassen für die Einstiegspunkte und dann Pakete mit verschiedenen Funktionalitäten
  2. Ich verwende PyDev für Eclipse und organisiere es so, wie ich es für Java tun würde.
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. Verwenden Sie DocString überall, um den Überblick zu behalten
  2. Nachdem Sie sichergestellt haben, dass sich die relevanten __init__.py - Dateien in den Ordnern befinden. es ist nur ein einfacher Fall von from module import class
6
AutomatedTester