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

Reply via email to