# === mod1.py === from foo import bar from mod2 import x bar.print_info(x) # === mod2.py === from mod3 import get_w from foo import bar class x(object): def __init__(self): self.s = "HELLO" bar.connect(x, get_w()) # === mod3.py === from mod2 import x from foo import bar def get_w(): class w(object): def __init__(self): self.z = "SDFD" return w bar.connect(w, x)