I realize that technically all methods are added to classes at "run-time", but what I'm talking about is this:
import ClientForm def controlEqual(self,other): return (self.type == other.type) and \ (self.name == other.name) and \ (self.value == other.value) and \ (self.disabled == other.disabled) and\ (self.readonly == self.readonly) def controlNotEqual(self,other): return not (self==other) ClientForm.Control.__eq__ = controlEqual ClientForm.Control.__ne__ = controlNotEqual def formEqual(self,other): if len(self.controls) != len(other.controls): return False for (c1,c2) in zip(self.controls,other.controls): if c1 != c2: return False return True def formNotEqual(self,other): return not (self==other) ClientForm.HTMLForm.__eq__ = formEqual ClientForm.HTMLForm.__ne__ = formNotEqual It works fine, but it seems like it might be dangerous (or just bad form) to insert methods into existing classes like that. Perhaps it would be safer to make sure that __eq__, __ne__, and __cmp__ don't exist before adding my own? -- Grant Edwards grante Yow! NEWARK has been at REZONED!! DES MOINES has visi.com been REZONED!! -- http://mail.python.org/mailman/listinfo/python-list