Designfrage - Klassen / Module

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
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

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
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

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
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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...
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

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
encbladexp
User
Beiträge: 61
Registriert: Freitag 7. März 2003, 19:28
Kontaktdaten:

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...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Vielleicht auch mal [wiki]Import[/wiki] anschauen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten