On Mon, 22 Aug 2011 03:04 pm John O'Hagan wrote: > The "pitches" attribute represents the instances and as such I found > myself adding a lot of methods like: > > def __getitem__(self, index): > return self.pitches[index] > > def __len__(self): > return len(self.pitches)
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 > But the fact that I haven't seen this approach before increases the > likelihood it may not be a good idea. I can almost hear the screams of > "No, don't do that!" The general technique is called delegation and is perfectly legitimate. http://c2.com/cgi/wiki?WhatIsDelegation http://en.wikipedia.org/wiki/Delegation_(programming) -- Steven -- http://mail.python.org/mailman/listinfo/python-list