Cloudthunder wrote: > In the example: > > class Boo: > def __init__(self, parent): > self.parent = parent > print self.parent.testme > def run(): > print "Yahooooo!" > > class Foo: > testme = "I love you!" > def __init__(self): > test = Boo(self) > > A = Foo() > > > How can I set up method delegation so that I can do the following: > > A.run() > > and have this call refer to the run() method within the boo instance? > Also, what if I have tons of functions like run() within the boo > instance and I want all them to be directly accessible as if they were > part of their parent (the Foo instance)? > The usual way is to provide a __getattr__ method, since this is invoked after the usual mechanisms have failed to produce a sought attribute.
class Boo: def run(self): print "Yahooooo!" def identify(self): print repr(self) class Foo: testme = "I love you!" def __init__(self): self.test = Boo() def __getattr__(self, attname): return getattr(self.test, attname) A = Foo() B = Boo() B.run() B.identify() A.run() A.identify() [EMAIL PROTECTED] ~/Projects/Python $ python test49.py Yahooooo! <__main__.Boo instance at 0x186c002c> Yahooooo! <__main__.Boo instance at 0x186b9d4c> regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Love me, love my blog http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list