On 2009-04-08, Gabriel Genellina <gagsl-...@yahoo.com.ar> wrote: >>> class Mixin: # or class Mixin(object) if new-style: >>> def __eq__(self, other): >>> return (self.type == other.type ... >>> def __ne__(self, other): >>> return not self.__eq__(other) >>> class FancyControl(MixIn, ClientForm.Control): pass >>> class FancyCheckboxControl(MixIn, ClientForm.CheckboxControl): pass >>> .. >>> ClientForm.Control = FancyControl >>> ClientForm.CheckboxControl = FancyCheckboxControl >> >> That would work -- but there are probably 8 or 10 different >> Control subclasses. It's a bit tedious mixing them all one at a >> time, and you need more "inside" information (the names of all >> the different subclasses). > > New style classes have a __subclasses__() method that could be used to > find all of them (*at a certain moment*) -- but considering all the > issues, I think that monkey-patching the base class is the "less bad" > option in this case...
I agree. Inserting methods into the base class seems to be working fine, and it's the least messy of the alternatives. I'd submit a patch for ClientForm, but I don't know if my definition of "equal" for a form/control is generally useful enough to warrant being added to the package. FWIW, I'm using it for automated regression-testing on a product containing a web server. Basically, I perform an operation on the product, and then check to make sure that only certain web pages/form/controls changed in the manner they should have. -- Grant Edwards grante Yow! ... the HIGHWAY is at made out of LIME JELLO and visi.com my HONDA is a barbequeued OYSTER! Yum! -- http://mail.python.org/mailman/listinfo/python-list