rekursiver import

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
fuppes
User
Beiträge: 28
Registriert: Dienstag 15. April 2008, 22:33

Hi,

also kann sein das ich hier total auf dem holzweg bin aber fragen wollte ich mal:
Ich hab ne class pom_element_list (ist von class list abgeleited), diese soll eine generic list darstellen sprich sie soll das speichern von nur bestimmten instancen zulassen. Die instancen können von den folgen typen sein.
- dependency_class
- m_dependency_class
-profile_class

Ok, mit den ersten beiden geht das auch. Bei profile_class wirds haarig. Denn die class profiles soll eben eine solche generic list von den typen dependency und m_dependnecy implementieren.
So und das fürht dann ja zu einem rekursiven import: pom_element_list importiert:

Nachtrag: Wenn ich die profile_class in der gleichen datei anlege, gehts ja. Ist das die einzige lösung?
1. dependency_class
2. m_dependency_class
3. profiles_clas

und profiles soll pom_element_list importieren. Naja und ein solche rekusiver import geht ja anscheinent nicht, denn ich bekomme die fehlermeldung:

Code: Alles auswählen

ImportError: cannot import name profile_class

Die frage ist hat ob solch ein rekusiver import garnicht möglich ist, oder ob ich einen andern fehler mache.
BlackJack

Zirkuläre importe sollte man nicht machen, das kann ins Auge gehen und man muss immer aufpassen, dass nichts schief läuft. Wenn diese drei Klassen so eng gekoppelt sind, gehören sie IMHO in *ein* Modul, schon ist das Problem gelöst. Wir sind hier ja nicht bei Java wo man (fast) jede Klasse in eine eigene Datei stecken muss.

Wobei der Typtest für die Elemente der Liste IMHO auch nicht so wirklich "pythonisch" ist.

Zur Namensgebung: geht es in der Problemdomäne um Abhängigkeiten und Profile oder Abhängigkeitsklassen und Profilklassen? Wenn ersteres, dann lass bitte das `_class` aus den Namen raus.
fuppes
User
Beiträge: 28
Registriert: Dienstag 15. April 2008, 22:33

hi,

ok, wenn ich alles (profile und generic_element_list) in ein module knalle gehts.
Ja ich weiss das solche type-gebunden sachen nicht gerade das optimum ist, aber derzeit sehe ich da keine andere loesung. Versuche nähmlich den zugriff auf eine XML datei mithilfe von lxml etwas einfacher zu mache.
Der grundgedanke ist das ein POM (project object model) mehre listen von als member haben kann. Später soll das ganze dann so aussehen das man nur noch auf diese listen rumrödelt und die genericList kümmert sich dann um das updaten der XML file.
BlackJack

Dafür muss man doch aber nicht auf die Typen testen!?

Kennst Du `lxml.objectify`?
fuppes
User
Beiträge: 28
Registriert: Dienstag 15. April 2008, 22:33

ok, das kannte ich nicht!
super, sieht ganu nach dem was was ich brauche

Danke
Antworten