RE: [Python-de] Automatische Validierung von Attributen eines Objektes
Diez, erstmal danke fuer deine Idee, da waere ich nicht so schnell draufgekommen. Zugegeben, ich hab's noch nicht ganz verdaut. :) Ich werde es die Tage genauer studieren. Wenn ich klarer sehe dann melde ich mich wieder. Wie auch immer man das dann implementiert so ein generischer Validierungs-Mechanismus ist doch in vielen Faellen sehr nuetzlich. Juergen -----Original Message----- From: python-de-bounces@python.net [mailto:python-de-bounces@python.net] On Behalf Of Diez B. Roggisch Sent: 20 October 2005 13:37 To: python-de@python.net Subject: Re: [Python-de] Automatische Validierung von Attributen eines Objektes Am Mittwoch, 19. Oktober 2005 13:58 schrieb Rauch, Juergen (Juergen):
Liebe Gemeinde,
folgende Idee moechte ich hier zur Diskussion stellen um sie danach evtl. im Python Cookbook zu publizieren.
Die Aufgabe: Es soll sichergestellt werden, dass einem Objekt keine unsinnigen Attribute zugewiesen werden koennen.
Hintergrund: Zum Beispiel eine WEB Applikation die CGI-Parameter bekommt und diese dann Attributen zuweist. Es geht also um eine serverseitige Validierung von Eingabewerten - Ja, ich weiss, Eigabewerte kann man auch vom Client validieren lassen, aber darum geht es jetzt nicht.
<snip>
Bin gespannt ob jemand eine Idee hat wie man das besser machen kann.
Ja. Metaclassen. Geht wesentlich einfacher. Folgende annahme: ein Validator ist ein callable, das einfach den Wert bekommt und dann einen ValueError schmeisst wenn der zu setzende String _nicht_ passt. Ausserdem werden Leerstrings und None auf None abgebildet. Eine moegliche Erweiterung sieht so aus, das man statt eines validators ein Tupel aus coercer und validator setzt. Erstere wird dazu verwendet den Wert wirklich zu _setzen_, zweiterer zu validieren. Der Vorteil: Ich kann zB einen String auf int-konformitaet pruefen, den ich aber trotzdem als String setzen will. Und richtig spannend wird's, wenn man einen validator-wrapper schreibt, der die __and__ und __or__ Methoden ueberlaed, um compositionen von Validatoren moeglich zu machen. Dann hat man eigentlich so ziemlich alles, was mir so einfaellt was man brauchen koennte :) Angehangen mein kleiner Test. Kleiner Schoenheitsfehler: Durch die Verwendung von int und float hat man Probleme sowas wie "" oder None zu unterdruecken mittels eines speziellen not-null-validators. Dazu muesste man die Validator-Semantik so aendern, das sie "" und None akezeptieren. MFG Diez Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (1)
-
Rauch, Juergen (Juergen)