Funktion in mehreren Modulen/Klassen nutzen

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
Jay-Pi
User
Beiträge: 19
Registriert: Dienstag 13. Februar 2007, 14:10

Hallo @ll,

ich habe mich mal wieder in eine blöde Situation durch teilen der Scripte manövriert.

Grob gesagt habe ich eine Funktion die in mehreren Klassen bzw Modulen immer wieder genutzt wird.
Mit Modulen meine ich Klassen, bzw Dateien in Unterordnern
zB eine Funktion getConfig() die eine Datei mit Hilfe des ConfigParsers einliest. Diese Funktion verwende ich in mehreren Klassen.
Jetzt hatte ich die Schlaue Idee definierst du doch die Funktion an einer Stelle. Von mir aus auch als Klasse.
Frage: Wie rufe ich diese wiederum dann auf? Da ich nur Fehler wie global name 'getConfig' is not defined bekomme.

Die Struktur sieht ungefär so aus:
Hauptscript.py
anderes.py
Ordner/nocheins.py

und im Hauptscript.py nutze ich dann ganz normal import
jetzt wird die Funktion in jeder Datei gebraucht, in mindestens einer der Klassen, die dort definiert sind.

Tipp? Oder ne einfache Anleitung zum vernünftigen OO Programmieren, was wohl in die Richtung geht.
Bzw. Anleitung zum "Pakete" erstellen.
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Jay-Pi
User
Beiträge: 19
Registriert: Dienstag 13. Februar 2007, 14:10

Danke

auf __init__.py in meinem Hauptordner bin ich natürlich nicht gekommen.

Ich versuche es mal mit __init__.py und __all__.
Die ersten Tests haben mir hier nicht geholfen.
Zudem Versuche ich mal folgende Doku durchzuarbeiten:
http://www.python.org/doc/essays/packages.html
Jay-Pi
User
Beiträge: 19
Registriert: Dienstag 13. Februar 2007, 14:10

Dieser Satz hätte ich ihn ausprobiert, hätte mir ein paar Sorgen erspart:

If the imported module is not found in the current package (the package of which the current module is a submodule), the import statement looks for a top-level module with the given name.

an dieser Stelle ein paar Kraftausdrücke, die ich euch erspare

Beispiel

Hauptscript.py
Funktionen.py
Modul/Script2.py

in script2.py mache ich ein from Funktionen import meineFunktion
und schon kann ich es im Sub-Package/Modul verwenden.
Jay-Pi
User
Beiträge: 19
Registriert: Dienstag 13. Februar 2007, 14:10

Und das beste daran ist:

Die Konfigurations-Datei wird relativ zum Pfad der Funktion in dem Modul Funktionen aufgerufen, so das ich nur noch eine Config brauche und nicht in jedem Modul eine eigene definieren muss. (freu) :D
Antworten