From a7ec0726e2783c3ba886707df2a8ddd0e7e909db Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 5 Apr 2009 14:40:06 +0000 Subject: [PATCH] #5370: doc update about unpickling objects with custom __getattr__ etc. methods. --- Doc/library/pickle.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index a99dc862f4d..f6b7ae42b30 100644 --- a/Doc/library/pickle.rst +++ b/Doc/library/pickle.rst @@ -458,6 +458,15 @@ Pickling and unpickling normal class instances For :term:`new-style class`\es, if :meth:`__getstate__` returns a false value, the :meth:`__setstate__` method will not be called. +.. note:: + + At unpickling time, some methods like :meth:`__getattr__`, + :meth:`__getattribute__`, or :meth:`__setattr__` may be called upon the + instance. In case those methods rely on some internal invariant being + true, the type should implement either :meth:`__getinitargs__` or + :meth:`__getnewargs__` to establish such an invariant; otherwise, neither + :meth:`__new__` nor :meth:`__init__` will be called. + Pickling and unpickling extension types ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^