[Python-de] Verstaendnisproblem: Programmweite Variablen
Gerhard Haering
gh at ghaering.de
Wed Apr 2 11:26:56 EST 2003
Andreas Kaiser wrote:
> Hallo,
>
> folgendes Problem:
> Eine Anwendung erfordert ein Login. Über einen Login-Dialog erfasse ich die
> Variablen User und Passwort.
> Nun möchte ich diese Variablen (oder den Status eingeloggt als "User"
> ja/nein) im gesamten Programm nutzen. Wie muss die Klasse aussehen, wo ich
> persistent diese Infos ablege und wie kann ich die Infos aus anderen
> Klassen abfragen?
Stichworte "Singleton" und "Borg", wenn du's nachlesen willst. Für
Beispiele dafür würde ich
http://aspn.activestate.com/ASPN/Python/Cookbook/ empfehlen.
> Mein Versuch:
> LoginData.py:
> class LoginData:
> def __init__(self, user, passw):
> self.user = user
> self.passw = passw
>
> def getUser(self):
> return self.user
>
> def getPassw(self):
> return self.passw
>
> in LoginDialog.py:
>
> from LoginData import *
> ...
> p = LoginData("Paul", "geheim")
>
>
> in Anwendung.py
>
> from LoginData import *
> ...
> user = LoginData.getUser()
hier rufst du getUser als Klassenmethode auf, es ist bei dir aber eine
Instanzmethode.
> bekomme ich den Fehler:
> TypeError: unbound method getUser() must be called with LoginData instance
> as first argument (got nothing instead)
>
>
> Ich brauche hierzu mal einen Denkanstoss oder ein Minimalbeispiel.
Ich bin grad auf dem Sprung, drum nur ganz schnell:
_logindata = None
import os
BLOAT = os.getenv("USERNAME") == "Robert.Kuzelj" # ;-)
if BLOAT:
class LoginData:
"""Bloat-Version"""
def __init__(self, user, passwd):
self._user, self._passwd = user, passwd
def _getuser(self):
return self._user
def _getpasswd(self):
return self._passwd
user = property(_getuser)
passwd = property(_getpasswd)
def login(user, passwd):
_logindata = LoginData(user, passwd)
else:
def login(user, passwd):
_logindata = (user, passwd)
def get_login():
return _logindata
HTH,
-- Gerhard
More information about the Python-de
mailing list