Inheritance and Design Question

Jean-Michel Pichavant jeanmichel at sequans.com
Thu May 28 06:57:16 EDT 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)
>
>     def process(self, value):
>         retval = "Child.result('%s')" % super(Child, self).process
> (value)
>         return retval
>
> So ....
>
> foo = Child()
> print foo.process('the value')
>   
>>> Child.result('Parent.result('the value')')
>>>       
Try this

class Parent(object):

    def process(self, value):
        retval = "%s.result('%s')" % (self.__class__.__name__, value)
        return retval

class Child(Parent):
    def __init__(self):
        Parent.__init__(self)


foo = Child()
print foo.process('the value')
>>> Child.result('the value'')

Of course you cannot see the inheritance in the result, but I'm assuming you wanted only the instance class to be displayed.

Jean-Michel




More information about the Python-list mailing list