Thank you very much, Greg, that does the job! Somehow I couldn't see it and I needed someone to point out to me.
Dan "Greg Ewing" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Dan Perl wrote: >> So far, so good! But let's assume that I want to change the __init__ >> methods so that they take a configuration as an argument so the objects >> are created and configured in one step, like this: >> alpha = A(config) > > One way would be to make the setConfig call only > in the root class, and perform the initialisation > that it depends on *before* making the super call > in each __init__ method, i.e. > > class A (object): > def __init__(self, config): > self.x = 0 > self.setConfig(config) > > class B (A): > def __init__(self, config): > self.y = 0 > super(B, self).__init__(config) > > class C (B): > def __init__(self, config): > self.z = 0 > super(C, self).__init__(config) > > This works here because each of the initialisation > operations is self-contained. It might not work so well > in real life if some of the base class state needs to be > initialised before the subclass initialisation can be > performed. However, it's worth considering -- I came > across the same sort of problem several times in > PyGUI, and I usually managed to solve it by carefully > arranging initialisations before and after the super > call. > > If you can't use that solution, I would suggest you > keep the __init__ and setConfig operations separate, > and live with having to call setConfig after creating > an object. Factory functions could be provided if > you were doing this a lot. > > -- > Greg Ewing, Computer Science Dept, > University of Canterbury, Christchurch, New Zealand > http://www.cosc.canterbury.ac.nz/~greg > -- http://mail.python.org/mailman/listinfo/python-list