Hallo zusammen,
ich habe ein Modul, das Klassen bereitstellt, die ein Aufgabengebiet beackern. Problem dabei ist, dass jede Klasse etwa 300 bis 400 Zeilen groß ist. Nun meine Frage: Eigentlich gehören die Klassen zusammen, weshalb ich sie in ein Modul packen würde. Andererseits möchte ich ungern ein Modul mit 1200 oder 2000 Codezeilen haben.
Wie würdet ihr vorgehen? Alles in ein Modul oder die Klassen in einzelne Module, wobei die Module über eine Namenskonvention zusammengehörig erscheinen, also etwas wie Modul.Klasse_1, Modul.Klasse_2 usw., also z. B. Auto.Lenkrad, Auto.Reifen, Auto.Frontscheibe?
Zur Info: Die Klassen bilden einzelne Seiten einer Website ab und stellen die dortigen Informationen bereit. Entsprechend ergibt sich für mich diese Frage. Andere Websites, die ich später vielleicht noch parsten möchte, halten vergleichbare Informationen und vergleichbarem Namen vor, d. h. ein Modul Messwerte mit der Klasse Niederschlag führt daher später absehbar zu Namenskonflikten.
Gibt es eine state of the art-Lösung?
Modul aufteilen?
Du könntest ein Package zur ganzen Webseite haben und die einzelnen Seiten in Kategorien aufteilen, wobei jeder Kategorie ein Modul entspricht. Wenn wir bei dem Auto Beispiel bleiben wollen, könnte man sowas wie auto.innenraum.Lenkrad haben.
Danke für den Hinweis!
Verständnisfrage: Ich habe schon mal ein package gebastelt; kann ich ein package aber auch mittels setup.py-Datei installieren und dann überall anders verwenden? (Falls ja, wie wäre die Struktur in der Hauptdatei, die ich installiere?) Ich schreibe i. d. R. Software, die Daten abfragt und dann bearbeitet bereitstellt, d. h. eine projektweite Verfügbarkeit ist unabdingbar.
Verständnisfrage: Ich habe schon mal ein package gebastelt; kann ich ein package aber auch mittels setup.py-Datei installieren und dann überall anders verwenden? (Falls ja, wie wäre die Struktur in der Hauptdatei, die ich installiere?) Ich schreibe i. d. R. Software, die Daten abfragt und dann bearbeitet bereitstellt, d. h. eine projektweite Verfügbarkeit ist unabdingbar.
Bis gerade habe ich die Software dokumentiert.
Verständnisfrage:
Wenn ich es richtig verstehe, dann habe ich z. B. folgende Ordnerstruktur
- package (Ordner)
-- __init__.py
-- klasse_1
-- klasse_2
-- klasse 3
readme.md
setup.py
Im Hauptverzeichnis kann ich dann mein setup.py ausführen und die Klassen im package-Ordner werden automatisch (?) erfasst.
PS Gibt es irgendwo ein Beispiel, wo man sich das in der freien Wildbahn ansehen kann? Ganz geheuer ist es mir nicht.
Verständnisfrage:
Wenn ich es richtig verstehe, dann habe ich z. B. folgende Ordnerstruktur
- package (Ordner)
-- __init__.py
-- klasse_1
-- klasse_2
-- klasse 3
readme.md
setup.py
Im Hauptverzeichnis kann ich dann mein setup.py ausführen und die Klassen im package-Ordner werden automatisch (?) erfasst.
PS Gibt es irgendwo ein Beispiel, wo man sich das in der freien Wildbahn ansehen kann? Ganz geheuer ist es mir nicht.
Was du als Klassen bezeichnest sind Module und Module können und sollten i.d.R. mehr als nur eine Klasse enthalten. Um sicherzugehen dass alles funktioniert solltest du es einfach mal testen. Erstell eine Distribution (python setup.py build sdist) und installier die in ein virtualenv mit pip. Wenn alles klappt und deine Unitests keine Fehler melden funktioniert alles.