Adding modified methods from another class without subclassing
research at johnohagan.com
Tue Aug 23 02:55:26 CEST 2011
On Mon, 22 Aug 2011 23:08:50 +1000
John O'Hagan <research at johnohagan.com> wrote:
> On Mon, 22 Aug 2011 15:27:36 +1000
> Steven D'Aprano <steve+comp.lang.python at pearwood.info> wrote:
> > Looks like a call for (semi-)automatic delegation!
> > Try something like this:
> > # Untested
> > class MySeq(object):
> > methods_to_delegate = ('__getitem__', '__len__', ...)
> > pitches = ... # make sure pitches is defined
> > def __getattr__(self, name):
> > if name in self.__class__.methods_to_delegate:
> > return getattr(self.pitches, name)
> > return super(MySeq, object).__getattr__(self, name)
> > # will likely raise AttributeError
> However, I don't understand what the super call is doing. If the method isn't delegated, shouldn't it just fall back to getattr(self, name)?
On reading the __getattr__ docs properly, I see that AttributeError is what should generally happen.
> Thanks and regards,
More information about the Python-list