static variable

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.
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

static variable

Beitragvon DatenMetzgerX » Samstag 30. September 2006, 11:42

Hallo

Ist es in Python irgend wie möglich mit Statischen Variabeln zu arbeiten.

Habe ein Modul welches mir die Verbindung zur DB herstellt (sqlite). Mehrere Module greifen auf diese Verbindung zu, will aber nicht das jedes mal eine neue eröffnet wird. Nun wollte ich mit staticmethode eine Methode schreiben welche mri die aktive Instanz zurück gibt. Allerdings weiss ich nicht in welcher Variabel ich die Insanz speichern soll...

am liebsten wäre mir so was

Code: Alles auswählen

class sqlConnection:
    instance = None  #Diese Variabel soll statisch sein
    def __init__(self, db = 'db.s3db'):
        self.conn = sqlite3.connect(db, isolation_level = None)   

        self.cur = self.conn.cursor()
        instance = self
    @staticmethode
    def getInstance():
        if instance == None:
            sqlConnection.__init__()
        return instance


Merci

DM
BlackJack

Beitragvon BlackJack » Samstag 30. September 2006, 12:30

Das ist ein Klassenattribut also kannst Du über den Klassennamen darauf zugreifen: ``sqlConnection.instance``.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Samstag 30. September 2006, 14:00

Dein Code müsste so funktionieren...
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Samstag 30. September 2006, 14:10

Zumindest, wenn das 'e' em Ende des Decorators entfernt wird.

Tipps:
- PEP 8 beachten bzgl. Namen von Klassen, Methoden und Leerzeichen
- Zum Testen auf None ist der Operator 'is' schneller und angebrachter. Alternativ kann man oft auch ein "if not x:" verwenden.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]