Seite 1 von 1

Designfrage - Klassen / Module

Verfasst: Donnerstag 16. November 2006, 00:13
von thonix
Hi zusammen,

ich versuche mich gerade ein einem größeren Projekt und habe da eine kleine Frage zwecks Design von klassen / Modulen in ausgelagerten Dateien.

Ich habe eine Klasse die verschiedene Funktionen hat die sie an ihre Kinderklassen vererben soll. Diese Funktionen geben debug/infos/fehler über das Logger-Modul wie gewünscht auf die Konsole, Datei, etc aus - wie dieser Logger Konfiguriert ist.

Jetzt kommen wir auch schon zu meiner Frage.
Derzeit habe ich die Klasse in meiner "Hauptdatei" in der auch die ganzen Parametern gesetzt werden (z.B. basicConfig(level=logging.DEBUG ...).

Wie stellt man es jetzt an, dass auch meine Klasse, die in zwecks Wiederverwendbarkeit und Übersichtlichkeit in einer anderen Datei liegen soll, was davon hat - und - das man es auch einfach in anderen Projekten verwenden kann.

Ich hoffe das was ich da oben zu später Stunde zusammen geschrieben habe versteht man, :-)

Thonix

Verfasst: Donnerstag 16. November 2006, 02:06
von rolgal_reloaded
Hallo,

ich bin mir nicht sicher, ob ich schnalle was du willst, aber ich versuch es einfach mal.

Ich gehe davon aus, dass deine Hauptdatei eine .py Datei ist, sonst würde wohl keine Klassendefinition drin stehen.

Wie die Parameter in deiner Hauptdatei genau gesetzt werden ist mir nicht klar. Wenn es möglich ist sie in einem Datentyp wie Liste oder Dictionary zu speichern, dann kannst du diese über das Modul pickle in einer Datei speichern und über dasselbe Modul wieder laden und dann darauf zugreifen.

Oder die ganzen Definitionen der Parameter stehen in einem Pseudopythonskript, also ebenfalls einer Pythondatei und du importierst sie einfach.


LG

rolgal_reloaded

Verfasst: Donnerstag 16. November 2006, 09:59
von Rebecca
Mmh? Das klingt fuer mich nach einer Aufgabe fuer einen geeigneten Konstruktor. Denn wenn du die Klasse in ein anderes Modul auslagerst, wirst du ja trotzdem im Hauptprogramm eine Instanz von deiner Klasse erzeugen, und an der Stelle wuerdest du deinem Konstruktor die entprechenden Parameter uebergeben...

Verfasst: Freitag 17. November 2006, 22:17
von thonix
OK hat mir glaub geholfen ;)

Gibt es für ausgelagerte Module irgendwo ein Design guide ?
Bzw werden in den Modulen imports gemacht oder werden die eher in der main.py gemacht ?

Vielen Dank schon mal

Verfasst: Montag 20. November 2006, 21:35
von encbladexp
Optimalerweise sollte man Klassen ohne Probleme Auslagern können, und dann einfach via import wieder laden können. Geht das nicht, hat man schon mal was beim OOP Falsch gemacht... Den wie weiter oben schon gesagt, ist das der Fall für einen guten Konstruktor (__init__()) der Klasse...

Dieser sollte alle relevanten Daten die die Klasse braucht um zu funktionieren bekommen.

mfg Betz Stefan
PS: Musste auch vor kurzem ein Projekt fast neuschreiben weil ich so nen mist gemacht habe... aus fehlern kann man lernen...

Verfasst: Dienstag 21. November 2006, 10:40
von jens
Vielleicht auch mal [wiki]Import[/wiki] anschauen ;)