Seite 1 von 1

Wie mit Modulen umgehen

Verfasst: Montag 5. Juli 2010, 19:36
von anogayales
Hi Community,

ich habe zwei Module A und B. Model A benötigt etwas von B und B benötigt etwas von A.

Sprich:
In A:

Code: Alles auswählen

from B import stuff
In B:

Code: Alles auswählen

from A import stuff
Jetzt bekomm ich die Meldung:

Code: Alles auswählen

ImportError: cannot import name stuff
Wie umgehe ich das Problem? Mir fällt da auf anhieb nur ein Modul B komplett unabhängig von A zu entwickeln.

Hintergrund ist, dass ich in den zwei Modulen auf die gleiche Datenstruktur zugreifen will, aber diese Datenstruktur in Modul A erzeugt wird. Die Datenstruktur in ein Model C zu verschieben wäre vielleicht eine Lösung. Dies ist aber etwas umständlich. Was sagt ihr?

Grüße,
anogayales

Re: Wie mit Modulen umgehen

Verfasst: Montag 5. Juli 2010, 19:47
von derdon
Warum ist es umständlich ein Modul C zu schreiben, worauf dann die Module A und B zugreifen können?

Re: Wie mit Modulen umgehen

Verfasst: Montag 5. Juli 2010, 19:48
von Pekh
* keinen Code auf Modulebene haben, sondern hübsch mit Funktionen arbeiten und Daten ausschließlich als Parameter übergeben. Dann kann man eine Datenstruktur auch wunderbar in anderen Modulen verwenden (indem eine Funktion in A eine Funktion in B aufruft und die DS übergibt);

* Wenn zwei Module inhaltlich so eng verzahnt sind, daß wechselseitige Abhängigkeiten bestehen, dann sollte man sie zu einem Modul zusammenfassen.

Re: Wie mit Modulen umgehen

Verfasst: Montag 5. Juli 2010, 19:55
von anogayales
Parameterübergabe bei jedem Aufruf finde ich einfach hässlich.

Wie geht ihr denn generell mit dem Problem um:

In Model-View Implementierungen kommt es ja oft vor, dass man viele kleine Klassen hat, die ineinander verschachtelt sind. Wenn jetzt das letzte Ui-Element (ganz unten in der Objekhierarchie) auf eine Datenstruktur zugreifen will, dann wäre es doch ganz einfach, dass ganze über eine globale Variable zu lösen und nicht eine Referenz der Variable in allen Ebenen weiterzureichen. Da entsteht doch Augenkrebs.

Grüße,
anogayales

Re: Wie mit Modulen umgehen

Verfasst: Montag 5. Juli 2010, 20:08
von pillmuncher
Ich glaube du suchst das hier.

Re: Wie mit Modulen umgehen

Verfasst: Montag 5. Juli 2010, 20:09
von BlackJack
@anogayales: Nein da bekommt man keinen Augenkrebs. Ich bekomme den eher bei globalen Variablen. Das ist unflexibel, schlecht zu testen, und fehleranfällig. Saubere Entwürfe sind halt nicht immer das einfachste was irgendwie zum Ergebnis führt.