fork download
  1. import pickle
  2.  
  3. class ThingHolder:
  4. def __init__(self, thing):
  5. print(self, thing)
  6. self.thing = thing
  7. def __reduce__(self):
  8. return (ThingHolder, (self.thing,))
  9.  
  10. th = ThingHolder([])
  11. th.thing.append(th)
  12.  
  13. th2 = pickle.loads(pickle.dumps(th, pickle.HIGHEST_PROTOCOL))
  14.  
  15. print()
  16. print(th2, th2.thing)
Success #stdin #stdout 0.05s 9920KB
stdin
Standard input is empty
stdout
<__main__.ThingHolder object at 0x2addfdafee80> []
<__main__.ThingHolder object at 0x2addfdafeeb8> []
<__main__.ThingHolder object at 0x2addfdafeef0> [<__main__.ThingHolder object at 0x2addfdafeeb8>]

<__main__.ThingHolder object at 0x2addfdafeeb8> [<__main__.ThingHolder object at 0x2addfdafeeb8>]