Seite 1 von 1

Funktion in mehreren Modulen/Klassen nutzen

Verfasst: Dienstag 20. November 2007, 18:39
von Jay-Pi
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.

Verfasst: Dienstag 20. November 2007, 18:44
von schlangenbeschwörer

Verfasst: Dienstag 20. November 2007, 19:21
von Jay-Pi
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

Verfasst: Dienstag 20. November 2007, 19:35
von Jay-Pi
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.

Zusatz

Verfasst: Dienstag 20. November 2007, 19:40
von Jay-Pi
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