On Mon, 06 Apr 2009 20:52:50 +0100, jelle <jelleferi...@gmail.com> wrote:

Hi Aaron,

Thanks a lot for your suggestions.
I wasnt familiar with the __get__ magic, which seems interesting.

So, finally it seems that the cleanest pattern is:

class ClsA( object ):
    def __init__( self, other ):
        self.inst= other

    def submethA( self, arg ):
        print( 'submethA %r, instance %r'% ( arg, self.inst ) )

class ClsB( object ):
    def methA( self, arg ):
        self.A= ClsA( self )
        print( 'methA %r'% arg )

b= ClsB( )
b.methA( 'this' )
b.A.submethA( 'that' )

You'll note that this is, all Aaron's protests to the contrary,
splitting your class up into multiple cooperating classes.  If
you're set on doing it like this, doing it this way avoids
polluting your namespace so much:

class ClsB(object):
    class ClsA(object):
        def do_something(self):
            print "Here's A doing something"

    def __init__(self):
        self.A = ClsB.ClsA()

    def do_something(self):
        print "Here's B doing something"

b = ClsB()
b.do_something()
b.A.do_something()

--
Rhodri James *-* Wildebeeste Herder to the Masses
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to