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. So funktionierts: aMember = Member("Hugo") aMember.name = "Gabi" # assign a valid attribute aMember.name = "hu@go" # kaboom -> assertion fires, only alpanumerics allowed Der Code: class HasAssertedAttributes: def __init__(self, aValue): self.aValue = aValue def __setattr__(self, aName, aValue): if self.__dict__.has_key(aName): if isinstance( self.__dict__[aName], AssertedAttribute): self.__dict__[aName].aValue = aValue else: self.__dict__[aName] = aValue else: self.__dict__[aName] = aValue class AssertedAttribute: def __init__(self, aValue): self.aValue = aValue def __setattr__(self, aName, aValue): self.assertValue(aValue) self.__dict__[aName] = aValue def __repr__(self): return self.aValue def assertValue(self, aValue): raise UserWarning, "this methode must be implemented by child" class AssertedName(AssertedAttribute): def assertValue(self, aValue): assert len(aValue) < 50 assert aValue.isalpha() class Member(HasAssertedAttributes): def __init__(self, name ): self.name = AssertedName(name) Bin gespannt ob jemand eine Idee hat wie man das besser machen kann. Viele Gruesse, Juergen _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de