Python Klassenübergreifende Variablen

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
BELzEBUB
User
Beiträge: 3
Registriert: Montag 2. April 2012, 14:47

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.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

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.
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.
BELzEBUB
User
Beiträge: 3
Registriert: Montag 2. April 2012, 14:47

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.
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.
BELzEBUB
User
Beiträge: 3
Registriert: Montag 2. April 2012, 14:47

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.
Antworten