Seite 3 von 3

Verfasst: Sonntag 12. August 2007, 21:56
von Leonidas
kaytec hat geschrieben:Falls er das Laden versucht sollte nicht None zurückgegeben werden. Wie könnte solch eine Rückgabe aussehen ? Zurückgeben könnte man ja irgendwie jeden Blödsinn und ich kann dies besonders gut !
Doch, sicher sollte bei einem erfolgreichen Laden ``None`` zurückgegeben werden und eben kein Statuswert. Wenn Fehler in Programmen auftauchen, dann werden in Python Ausnahmen geworfen statt wie in C Rückgabewerte zu prüfen. Dies hat den Vorteil, dass man nicht vergessen kann, irgendwo den Statuswert zu prüfen und das Programm ohne weiteres weiterläuft.

Sieht dann etwa so aus:

Code: Alles auswählen

class AdressbuchNichtGefundenException(IOError): pass

def laden(dateiname):
    try:
        f = file(dateiname, 'r')
        # irgendwas mit f machen
     except (IOError, e):
         raise AdressbuchNichtGefundenException("Die Datei, die das Adressbuch enthält, konnte nicht geladen werden")
Das heißt, dass immer wenn ein IOError auftritt, wird eine andere Exception geworfen, die das auftretende Problem besser beschriebt. Oder man lässt die Try-Except Geschichte ganz weg und lässt den Nutzer der Klasse selbst mit dem IOError irgendwie fertig werden.

Verfasst: Montag 13. August 2007, 08:28
von kaytec
Danke Leonidas !

Ich habe mit der Klasse ein wenig rumprobiert. Falls eine Adressdatei vorhanden ist, kann ich über diese itterieren etc. Wenn keine vorhanden ist, bekomme ich die gewünschte Fehlermeldung ('Datei nicht vorhanden....'). Möchte ich nun ein neue Datei anlegen, ist self.adressen ja noch None. Self.adressen müsste aber list() sein, damit ich irgendwelche Aktionen durchführen kann. Setze ich in der ' __init__' Zeile self.adressen = list(), dann gehen alle gewünschten Aktionen. Nach deiner Aussage sollte es aber doch None sein ...?

gruss und dank frank

Verfasst: Montag 13. August 2007, 09:10
von BlackJack
Die Aussage kann ich nirgends finden. In der `__init__()` sollte das Objekt in einen konsistenten, benutzbaren Zustand gebracht werden. Eine leere Liste macht da mehr Sinn als `None`.

Verfasst: Montag 13. August 2007, 19:07
von Leonidas
BlackJack hat geschrieben:Die Aussage kann ich nirgends finden.
Ich kann mich ebenso nicht erinnern. Ich habe zwar gesagt, dass Werte oft mit None initialisiert werden, aber in ``__init__()`` sollte man ``self.adressen`` als Liste initialisieren - das siehst du ganz richtig und das hätte ich auch getan.

Verfasst: Montag 13. August 2007, 21:42
von kaytec
Danke BlackJack und Leonidas !

Ein Versuch mit Tkinter !

http://www.ubuntuusers.de/paste/13746/

Diese Version ist noch nicht mit einer geeigneten Lösung für eine nicht vorhandene Adressdatei.

gruss frank

Verfasst: Dienstag 14. August 2007, 00:04
von kaytec
An der Suche gebastelt !

http://www.ubuntuusers.de/paste/13750/

gruss frank

Verfasst: Donnerstag 16. August 2007, 08:46
von kaytec
Hallo !

Habe an den Fehlermeldungen rumgebastelt und sie in die Oberfäche eingebaut. Ist es so ok ?

edit : Link war falsch

gruss frank

edit: Es fehlt der import von Toplevel

Verfasst: Donnerstag 16. August 2007, 08:56
von EnTeQuAk
Der letzte Link ist leider etwas falsch, oder es ging hier wirklich um eine Xorg.conf?

Verfasst: Donnerstag 16. August 2007, 09:03
von kaytec
Das ist der richtige Link !

http://www.ubuntuusers.de/paste/13818/

Wie ist das passiert ?

gruss frank