inheritance and default arguments

Jim Meier jim at dsdd.org
Sun Aug 11 15:55:56 EDT 2002


On Sun, 11 Aug 2002 09:47:55 -0600, Andrew Koenig wrote:

> I want a method in a class hierarchy to have a default argument.  For
> example, I might want the method to deal with a designated substring
> of a string that I pass as an argument, and I want the beginning and
> end of the substring to be 0 and len(s) as defaults.
> 
> I can't do this:
> 
>         class Base(object):
>                 def f(self, s, begin=0, end=len(s)):
>                         ...
> 
>         class Derived(object):
>                 def f(self, s, begin=0, end=len(s)):
>                         ...

In this specific case, a one 'pythonic' way would be to use -1 as your
default value for end, assuming you are going to use slices and string
functions on s.

One suggestion would be to have Derived's f() call Base's f() and leave
the dynamic initialization in Base. This means running the original f()
every time, though, which probably isn't desirable.

-Jim



More information about the Python-list mailing list