◐ Shell
clean mode source ↗

Message 148759 - Python tracker

The attached patch makes pickle use an object's __qualname__ attribute if __name__ does not work.

This makes nested classes, unbound instance methods and static methods picklable (assuming that __module__ and __qualname__ give the correct "address").


BTW, It would not be hard to make instance methods picklable (and, as a by-product, class methods) by giving instance methods a __reduce__ method equivalent to

  def __reduce__(self):
    return (getattr, (self.__self__, self.__name__))

Is there any reason not to make such a change?