class Application:
def __init__(self):
self.instanceA = ClassA(self)
self.instanceB = ClassB(self)
def run(self):
self.instanceA.send_hello()
self.instanceB.send_hello()
class ClassA:
def __init__(self, app):
self.app = app
def hello(self, sender):
print('A: Hello from {}'.format(sender))
def send_hello(self):
self.app.instanceB.hello("A")
class ClassB:
def __init__(self, app):
self.app = app
def hello(self, sender):
print('B: Hello from {}'.format(sender))
def send_hello(self):
self.app.instanceA.hello("B")
app = Application()
app.run()
Y2xhc3MgQXBwbGljYXRpb246CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuaW5zdGFuY2VBID0gQ2xhc3NBKHNlbGYpCiAgICAgICAgc2VsZi5pbnN0YW5jZUIgPSBDbGFzc0Ioc2VsZikKICAgIAogICAgZGVmIHJ1bihzZWxmKToKICAgICAgICBzZWxmLmluc3RhbmNlQS5zZW5kX2hlbGxvKCkKICAgICAgICBzZWxmLmluc3RhbmNlQi5zZW5kX2hlbGxvKCkKCmNsYXNzIENsYXNzQToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcHApOgogICAgICAgIHNlbGYuYXBwID0gYXBwCgogICAgZGVmIGhlbGxvKHNlbGYsIHNlbmRlcik6CiAgICAgICAgcHJpbnQoJ0E6IEhlbGxvIGZyb20ge30nLmZvcm1hdChzZW5kZXIpKSAKCiAgICBkZWYgc2VuZF9oZWxsbyhzZWxmKToKICAgICAgICBzZWxmLmFwcC5pbnN0YW5jZUIuaGVsbG8oIkEiKQoKY2xhc3MgQ2xhc3NCOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFwcCk6CiAgICAgICAgc2VsZi5hcHAgPSBhcHAKCiAgICBkZWYgaGVsbG8oc2VsZiwgc2VuZGVyKToKICAgICAgICBwcmludCgnQjogSGVsbG8gZnJvbSB7fScuZm9ybWF0KHNlbmRlcikpIAoKICAgIGRlZiBzZW5kX2hlbGxvKHNlbGYpOgogICAgICAgIHNlbGYuYXBwLmluc3RhbmNlQS5oZWxsbygiQiIpCgphcHAgPSBBcHBsaWNhdGlvbigpCmFwcC5ydW4oKQ==