[Python-de] Vererbung und globale Objekte (war "socket")

Olaf Radicke olaf_rad at gmx.de
Fre Okt 17 22:28:56 CEST 2003


Am Fre, 2003-10-17 um 21.27 schrieb Stefan J. Betz:
> Am Fri, Oct 17, 2003 um 17:49:21 CEST, Olaf Radicke schrieb:
> > Hi!
> > 
> > Betreffs "Modul Socket"
> > 
> > Wenn ich von service.accept() ein Objekt zurück bekomme,
> > und daraus ein Thread mache und dann (parallel) die nächsten
> > Verbindungsversuch mit einen neuen Thread beantworte und
> > immer so weiter...Ist dann eigentlich für die Threads klar
> > welche Anfragen für sie sind und welche nicht. Also ist
> > das Objekt was ich von  service.accept() zurückbekomme schon
> > eine Session? Oder wie sorge ich dafür das der richtige Thread
> > mit dem richtigen Klienten redet?
> > 
> > MfG
> > Olaf
> 
> Hallo Olaf,
> 
> ja das Objekt das du von accept() zurückbekommen tust ist eine
> Eindeutige Zuweisung einer Verbindung (oder Session, aber das behandle
> ich synonym)...

Super! Dann muss ich mich darum schon mal nicht kümmern :-)
Python ist nach C/C++ so einer Erholung...

> Ich mache da einfach immer eine Klasse, welche ich von threading.Thread
> ableite, und welche ein Attribut "session" hat, so habe ich quasi für
> jede Session ein Thread Objekt, welches wiederum das dazu passende
> Socket Objekt dabei hat (als Attribut)...

Um Vererbung habe ich aus vielerlei Gründe bisher (vielleicht
auch zu Unrecht) ein Bogen gemacht. Zum einen hatte ich es lange
Zeit nicht versanden, zum anderen kenne ich die Klassen der 
Standardbiblithek zu wenig um nicht versehentlich ein Funktionsnamen
zu nehmen den es schon gibt. Um letzteres völlig aus zu schießen,
benutze ich immer noch vollqulifiezierte Namen (Tkinter.Button etc.)
Selbst für meine eigenen Klassen. 

Ich habe jetzt ein etwas größeres  Projekt in Python angefangen.
Eine ganze reihe von Objekten brauchen die gleichen Informationen
Z.B. die die Daten aus der Konfigurationsdatei. Jetzt habe ich
ein Objekt "Konfig" als global angelegt. Aber die anderen Objekte
kennen es trotzdem nicht, weil ihre Klassendefinition in einer 
anderen Datei steht. Also gebe ich jetzt jeder Objektinstanz das
Objekt  "Konfig" als Parameter mit.  Und weil ich noch ein paar
globale Objekte mehr habe, wird die Liste immer länger. Manchmal
braucht ein Objekt gar nicht das Objekt  "Konfig" sondern in dem
Objekt wird eine weitere Instanz eines Objektes angelegt was
das globale Objekt braucht. 

Ich weiß Globale Variablen/Objekte sind zu vermeiden, aber
bei einem Objekt "Konfig" währe es schon sinnvoll.

MfG
Olaf  


-- 
===================================================
"Meine Meinung steht fest. Bitte verwirren sie mich
nicht mit Tatsachen!"
                          Unbekannt.
===================================================