Seite 1 von 1

Python Klassenübergreifende Variablen

Verfasst: Montag 2. April 2012, 15:08
von BELzEBUB
Ich habe vor ein paar Tagen damit angefangen ein Programm mit Python zu schreiben und stehe jetzt vor folgendem Problem:

Ich greife mit dem Programm auf eine MySQL Datenbank zu, dass funktioniert auch soweit einwandfrei mit der Einschränkung das ich in jeder Klasse die Daten einliest und/oder manipuliert eine eigene MySQL Verbindung öffnen muss.

Und jetzt zu meiner Frage: Gibt es die Möglichkeit in Python Variablen zu definieren auf die von überall aus dem Programm zugegriffen werden kann? Eventuell gibt es ja gar eine elegantere Lösung für mein Problem.

Re: Python Klassenübergreifende Variablen

Verfasst: Montag 2. April 2012, 15:16
von JonasR
Anstatt "globale" Variablen zu benutzen, das ist übrigens das lösungs Wort zu deinem Ansatz, solltest du die Variablen oder besser das Objekt der SQL Klasse an die anderen Klassen übergeben.

Re: Python Klassenübergreifende Variablen

Verfasst: Montag 2. April 2012, 15:21
von BlackJack
@BELzEBUB: Du könntest Deinen Klassen eine bestehende MySQL-Verbindung in der `__init__()` übergeben. Oder ein eine Verbindung in einem Modul ablegen, dass von allen Modulen, die die Verbindung benötigen importiert wird.

Re: Python Klassenübergreifende Variablen

Verfasst: Montag 2. April 2012, 16:28
von BELzEBUB
BlackJack hat geschrieben:@BELzEBUB: Du könntest Deinen Klassen eine bestehende MySQL-Verbindung in der `__init__()` übergeben.
Das ist genau was ich vermeiden wollte
BlackJack hat geschrieben:Oder ein eine Verbindung in einem Modul ablegen, dass von allen Modulen, die die Verbindung benötigen importiert wird.
Das hört sich nach der Lösung an die ich gesucht habe. Werde ich gleich mal testen.

Re: Python Klassenübergreifende Variablen

Verfasst: Montag 2. April 2012, 16:34
von lunar
@BELzEBUB: Warum möchtest Du das vermeiden? Je mehr globale Variablen in einem Programm, desto mehr Zustand musst desto komplexer die Abhängigkeiten. Wenn erst mal das ganze Programm auf einer globalen Datenbankverbindung arbeitet, wird es ein schönes Stück Arbeit, die Art des Datenbankzugriffs zu verändern (e.g. SQLAlchemy einzuführen), oder das Programm mal zu parallelisieren.

Re: Python Klassenübergreifende Variablen

Verfasst: Montag 2. April 2012, 17:06
von BELzEBUB
Ich verstehe deine Argumente vollkommen warum es nicht besonders sinvoll ist. Da aber nur abundzu auf die Datenbank zugeriffen wird und auch nie mehr als eine Verbindung gleichzeitig benötigt wird finde ich die Arbeit mit einer globalen Verbindung einfacher.