On Apr 1, 2008, at 7:23 AM, [EMAIL PROTECTED] wrote: > I've also found myself wondering: > > 1. What are the two arguments to super used for?
To determine the type (1st arg) for which the superclass hierarchy is to be determined, and the instance (2nd arg) if the super object is to be bound. In typical usage, they are the class of the current instance, and the 'self' reference to the instance. > 2. What happens when the method supplied *after* the super is > different from the containing method? > > In the above example what happens if: > > class DaboUIClass(dabo.ui.dControlMixin, someWxPythonClass): > def __init__(self, *args, **kwargs): > doOurCustomStuffBeforeTheSuperCall() > super(DaboUIClass, self).callRandomMethod(foobar) > doOurCustomStuffAfterTheSuperCall() super() returns an object that doesn't "know" in what method it was derived, so as long as the superclass has the 'callRandomMethod' method, and 'foobar' is defined, there is no problem at all. IOW, the only context is the class of the instance, not any particular method of the instance. You could also do something like this: class DaboUIClass(dabo.ui.dControlMixin, someWxPythonClass): def __init__(self, *args, **kwargs): doOurCustomStuffBeforeTheSuperCall() self.super = super(DaboUIClass, self) self.super.__init__(*args, **kwargs) doOurCustomStuffAfterTheSuperCall() def someMethod(self, foo, bar): self.super.someMethod(foo, bar) def someOtherMethod(self): self.super.someOtherMethod() -- Ed Leafe -- http://mail.python.org/mailman/listinfo/python-list