import pickle

class ThingHolder:
    def __init__(self, thing):
        print(self, thing)
        self.thing = thing
    def __reduce__(self):
        return (ThingHolder, (self.thing,))

th = ThingHolder([])
th.thing.append(th)

th2 = pickle.loads(pickle.dumps(th, pickle.HIGHEST_PROTOCOL))

print()
print(th2, th2.thing)