> Behalf Of Manuel Bleichner > In a module I have a huge number of classes of the form: > > class A(object): > connected_to = [B, C] > <other attributes...> > > class B(object) > connected_to = [C] > <other attributes...> > > class C(object) > connected_to = [A] > <other attributes...> > > As you see, classes A and B reference classes that are not > yet defined when the class is being defined. > It will raise a NameError: 'B'.
How about a connection broker? Simple example: ############################# connections = {} def Register( obj ): try: connections[obj.name]['obj'] = obj except KeyError: connections[obj.name] = { 'obj' : obj, 'connected_to' : [] } def ConnectTo( objname, obj ): try: connections[objname]['connected_to'].append( obj ) except KeyError: connections[objname] = { 'obj' : None, 'connected_to' : [obj] } class ConnectionObject: def __str__(self): return self.name class A(ConnectionObject): def __init__(self): self.name = 'A' Register( self ) ConnectTo( 'B', self ) class B(ConnectionObject): def __init__(self): self.name = 'B' Register( self ) ConnectTo( 'A', self ) ConnectTo( 'C', self ) class C(ConnectionObject): def __init__(self): self.name = 'C' Register( self ) ConnectTo( 'A', self ) a = A() b = B() c = C() for (key, val) in connections.iteritems(): print 'object: %s (%s)' % ( key, val['obj'] ) str_vals = [] for obj in val['connected_to']: str_vals.append( str( obj ) ) print '\tconnections from:', str_vals ############################# Output: object: A (A) connections from: ['B', 'C'] object: C (C) connections from: ['B'] object: B (B) connections from: ['A'] object: D (None) connections from: ['C'] Regards, Ryan Ginstrom -- http://mail.python.org/mailman/listinfo/python-list