class Device(object): def __del__(self): print("Device!") class Vector(object): def __init__(self, device): self.device = device def __del__(self): print("Vector!") class DeviceHolder(object): def __init__(self, device): self.device = device class VectorHolder(object): def __init__(self, vector): self.vector = vector def main(): d = Device() v = Vector(d) a = DeviceHolder(d) b = VectorHolder(v) a.b = b b.a = a if __name__ == "__main__": main()