Seite 1 von 1
Raise statement
Verfasst: Samstag 24. Mai 2008, 09:02
von Crazed
Hallo,
Eine kleine Frage zum Raise statement:
In der Dokumentation steht man kann es entweder so :
schreiben, was auch gut funktioniert, oder auch so
Was in diesem Falle auch fuktioniert.
Aber ich möchte meine eigene Exception aufrufen:
Das funktioniert das aber nicht:
NameError: name 'Account' is not defined
Wie soll ich den denn definieren?
MfG,
CracKPod
Verfasst: Samstag 24. Mai 2008, 09:05
von BlackJack
Zum Beispiel so: ``class AccountError(Exception): pass``.
Die erste Variante nur mit Zeichenketten ist "deprecated" und fliegt in Python 3.0 raus.
Verfasst: Samstag 24. Mai 2008, 09:15
von Crazed
Das pass am Ende macht einfach gar nichts, oder?
Ist halt nur theoretisch erforderlich damit die Klasse nicht leer ist.
Weil es erbt ja von Excpetion
Und gibt es eine Möglichkleit die Exceptions in einer Klasse zu definieren? oder muss ich das außerhalb machen. Also Klassenkapselung ^^?
Verfasst: Samstag 24. Mai 2008, 09:54
von Leonidas
Crazed hat geschrieben:Das pass am Ende macht einfach gar nichts, oder?
Ja, das ist nur dazu da, den Parser glücklich zu machen, weil der sonst keinen Block hätte.
Crazed hat geschrieben:Und gibt es eine Möglichkleit die Exceptions in einer Klasse zu definieren? oder muss ich das außerhalb machen. Also Klassenkapselung ^^?
BlackJack hat dir doch die Exception in einer Klasse definiert?
Verfasst: Samstag 24. Mai 2008, 10:03
von BlackJack
Ich habe eine Exception(-Klasse) im Modul definiert, und keine in einer Klasse. Falls das jetzt das war, worauf Crazed hinaus wollte.
Verfasst: Samstag 24. Mai 2008, 13:10
von Crazed
Ich wollte eigentlich wissen wie man Klassen in Klassen kapseln kann ^^.
Verfasst: Samstag 24. Mai 2008, 13:56
von Leonidas
Verfasst: Samstag 24. Mai 2008, 16:04
von BlackJack
Wobei ich persönlich davon abraten würde. Mir ist bis jetzt auch noch kein Anwendungsfall unter gekommen, wo ich das gebraucht hätte.
Verfasst: Samstag 24. Mai 2008, 17:22
von Leonidas
Ja, mir auch nicht. Wir könnten das jetzt aber sogar noch weiterdrehen, indem eine Instanzmethode eine Klasse zurückgibt, dann hätten wir eine großartige Verschachtelung über mehrere Ebenen. Perfekt wenn man Overengineering geplant hat.
Verfasst: Samstag 24. Mai 2008, 17:37
von audax
Die Model-Klassen bei Django nutzen das

Verfasst: Samstag 24. Mai 2008, 17:45
von Leonidas
In dem Fall ist aber die innere Klasse eher als Konfiguration gedacht. Das wird mit newforms-admin noch zunehmen, wenn die noch mehr Admin-Sachen aus den eigentlichen Model-Definitionen rausnehmen.