class FirstClass: myclass = {} def __init__(self, ClassList): print "FirstClass: I'm alive!" self.updateClassList(ClassList) def updateClassList(self, ClassList): self.myclass = ClassList print "FirstClass: classlist updated" def hello(self): print "FirstClass: Someone said hello!" def callSecondClass(self): print "FirstClass: Saying hi to SecondClass..." self.myclass['SecondClass'].hello() class SecondClass: myclass = {} def __init__(self, ClassList): print "SecondClass: I'm alive!" self.updateClassList(ClassList) def updateClassList(self, ClassList): self.myclass = ClassList print "FirstClass: classlist updated" def hello(self): print "SecondClass: Someone said hello!" def callFirstClass(self): print "SecondClass: Saying hi to FirstClass..." self.myclass['FirstClass'].hello() '''Main here''' ClassList = {'FirstClass':None, 'SecondClass':None} ClassList['FirstClass'] = FirstClass(ClassList) ClassList['SecondClass'] = SecondClass(ClassList) for cl in ClassList: ClassList[cl].updateClassList(ClassList) ClassList['FirstClass'].callSecondClass() ClassList['SecondClass'].callFirstClass()