On Wed, May 27, 2009 at 9:58 PM, imageguy <imageguy1...@gmail.com> 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')') > > IS there another pattern or idiom that would accomplish this? > This seems a bit 'smelly' to me. Also seems almost the inverse of > decorators, but I am not sure decorators would be appropriate in this > case.
I think I would split out the calculation into two methods in this case: class Parent(object): def process_essential(self,value): retval = "Parent.result('%s')" % value return retval def processs(self,value): return process_essential(value) class Child(Parent): def process(self,value): retval = "Child.result('%s')" % process_essential(value) return retval -- André Engels, andreeng...@gmail.com -- http://mail.python.org/mailman/listinfo/python-list