bruno at modulix wrote: > Duncan Booth wrote: > (snip) >> Usually though, if a subclass doesn't immediately call the base class >> constructors as the first thing it does in __init__ it indicates poor >> code and should be refactored. > > Not necessarily. It's a common case to have some computations to > do/some attributes to set in the derived class's __init__ before > calling the superclass's. >
I did only say 'usually'. Can you actually think of any good examples where you have to set a derived attribute before you can call the base class constructor? I can't, which is why I was a bit vague. The base class is unlikely to depend on the derived class attributes, and unless it does there should be no reason which you can't just call the base __init__ straight away. Perhaps if the base __init__ calls an overridden method, but at that point it sounds to me like something wants refactoring. I can think that you might have to do some computations to calculate parameters for the base __init__, but that is a separate issue. -- http://mail.python.org/mailman/listinfo/python-list