title: What is the difference between __reduce__ and __reduce_ex__?
body: <p>I understand that these methods are for pickling/unpickling and have no relation to the reduce built-in function, but what's the difference between the 2 and why do we need both?</p>