You could file a bug against Python for not including more helpful error messages. In the meantime, modify the _reduce_ex()
function in copy_reg.py
.
if base is self.__class__:
print self # new
raise TypeError, "can't pickle %s objects" % base.__name__
Output:
<bound method ?.test_func of <__main__.Test object at 0xb7f4230c>>
Traceback (most recent call last):
File "nopickle.py", line 14, in ?
pickle.dumps(test)
File "/usr/lib/python2.4/copy_reg.py", line 69, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle instancemethod objects