Inheritance and Design Question

Terry Reedy tjreedy at udel.edu
Wed May 27 23:21:23 CEST 2009


imageguy wrote:
> I have an object the I would like to use as a base class.  Some of the
> methods I would like to override completely, but others I would simply
> like to call the base class method and use the return value in the
> child method.  The purpose here is to eliminate the duplication of
> valuable code in the parent, when I really just need the child to
> operate of a results of the parent.
> 
> Consider the following two classes;
> 
> class Parent(object):
>     def process(self, value):
>         retval = "Parent.result('%s')" % value
>         return retval
> 
> class Child(Parent):
>     def __init__(self):
>         Parent.__init__(self)

Delete this and the parent __init__ is called directly.
> 
>     def process(self, value):
>         retval = "Child.result('%s')" % super(Child, self).process
> (value)
>         return retval

super() was designed for multiple inheritance.  The only reason I know 
to use it with single inheritance it to save a 
global-search-and-replace_with_confirmation if you change the name of 
the parent or change parents.  Unless I really anticipated such 
contigencies, I would probably write Parent.process(self, value).

tjr




More information about the Python-list mailing list