Nowadays the best practice for invoking a method from all superclasses (yes, multiple inheritance) is this:
class SubClass(BaseClass): def __init__(self, t, *args, **kw): super(SubClass, self).__init__(*args, **kw) # do something with t That way you let Python decide which superclasses your SubClass has, instead of hard-coding it in several places. Cheers, Luciano On Tue, Mar 18, 2008 at 9:37 PM, John Fouhy <[EMAIL PROTECTED]> wrote: > On 19/03/2008, Allen Fowler <[EMAIL PROTECTED]> wrote: > > I have a super class that accepts many arguments to it's constructor, and > a subclass that should define one additional argument. > > > > What's the most "pythonic" way to make this work? > > class BaseClass(object): > def __init__(self, x, y, z, foo='foo'): # whatever > # etc > > class SubClass(BaseClass): > def __init__(self, t, *args, **kw): > BaseClass.__init__(self, *args, **kw) > # do something with t > > This does mean that the special sub class argument has to come before > the base class arguments when you create instances. > > Whether you call BaseClass.__init__ early or late in the subclass init > method could depend on what your classes are doing. Remember, in > Python, __init__ only initializes objects, it doesn't create them. > It's just another bit of code that you can call whenever you want. > > -- > John. > > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor