Modul aufteilen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Antworten