Veamos, a veces soy algo paquete programando y no sé si me falta algo.
Tengo la clase Map, que es una lista de objetos de la clase Wave, que a su vez es una lista de objetos de la clase Mob. El problema viene cuando una acción de la clase Mob tiene como consecuencia la modificación de un valor de la clase Map. Lo que he hecho ha sido pasar, desde la clase Map, self como variable a las otras clases para poder usar sus funciones. No sé si es correcto o hay alguna forma mejor. Funcionar, funciona, eso sí.
class Mob(self, map, etc):
self.map = map
...
self.map.foo()
...
class Wave(self, map, etc):
self.map = map
...
self.mobs.add(Mob(self.map, etc))
...
class Map(self, etc):
...
self.waves.append(Wave(self, etc))
...
def foo():
print "Hola EOL"
...
No sé si me he explicado bien. En fin, que llevo un rato buscando y no he encontrado nada mejor.