Wie 'handelt' man mehrere Klassen

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
neweman
User
Beiträge: 7
Registriert: Sonntag 21. November 2010, 20:54

Hi,
ich progge ein bißchen rum und habe folgendes Problem vor dem ich stehe: In meiner Anwendung instanziere ich mehrere Klassen die ich im späteren Verlauf brauchen werde. Teilweise brauchen sich die Klassen auch untereinander. Das ganze ist jetzt ein drucheinander geworden, so das ich manchmal die instanz einer Klasse beim Methodenaufruf mitgebe und manchmal nicht.
So ähnlich wie in dem Beispielt was ich eingefügt habe:

Code: Alles auswählen

import A,B,C,D
import A,B,C,D
main (Parameter) :
	clsA = A.A(Parameter)
	clsB = B.B(Parameter)
	clsC = C.C(Parameter)
	clsD = D.D(Parameter)
	result1 = clsA.DoWork ( clsB,clsC,clsD )
	result2 = clsD.DoWork ( clsA,clsB,clsC )
Meine Frage(n): Ist das weitergeben der Klasseninstanzen beim Aufruf der Methoden sinnvoll, oder sollte man lieber die benötigten Klassen nochmals in den Klassen erneut instanzieren und nicht beim Aufruf der Methoden mitgeben ?
Am liebsten würde ich alle Klassen die ich benötige am Anfang des Programmes instanzieren, dann in 'irgenwas' packen und dann immer nur dieses eine 'irgenwas' mitschleppen/durchreichen. Das hätte den Vorteil das alle Klassen zum Programmstart ihre __init__ Methode durchlaufen. Dort werden dann einige checks gemacht die im Fehlerfall eine Exception auslösen.
Kann mich bitte jemand in die richtige Richtung schubsen ( was muss ich mir mal ansehen.... )


Gruß und Danke
newman
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Prinzipiell solltest du alles uebergebe was was du uebergeben kannst wenn dies das Ergebnis beeinflusst, sonst schraenkst du dich unnoetig ein
BlackJack

@neweman: Ich kann's nicht genau an irgendetwas festmachen, aber wie Du über Klassen und Instanzen redest, klingt irgendwie komisch. Wenn Du nicht das Exemplar übergibst und in der Methode ein Neues erstellst, dann musst Du ja stattdessen die Argumente übergeben, die Du zum erstellen des Exemplars benötigst. Dadurch wäre ja nichts gewonnen, ausser mehr Komplexität und vielleicht noch mehr Argumente die übergeben werden müssen.

Oft ginge das ja auch gar nicht, nämlich dann, wenn das Objekt was man übergibt, verändert wird. Dann macht es ja einen Unterschied ob man ein neues Objekt erstellt, oder ein übergebenes verändert.

Wenn Du zu viele Argumente übergibst, kannst Du überlegen welche davon sich sinnvoll zu einem weiteren Objekt zusammenfassen lassen.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Importierst du wirklich zweimal die Module?
Vermutlich wäre es auch einfacher, wenn du nur ein Modul erstellst, da die Klassen ja nicht unabhängig voneinander zu sein scheinen.
In Python ist es nicht nötig, jede Klasse in einem Modul zu verwalten. Außderdem ist es oft auch gar nicht nötig, Klassen/Objekte zu verwenden.
Antworten