From: Georg Brandl Date: Sun, 5 Apr 2009 14:40:06 +0000 (+0000) Subject: #5370: doc update about unpickling objects with custom __getattr__ etc. methods. X-Git-Tag: v2.7a1~1558 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7ec0726e2783c3ba886707df2a8ddd0e7e909db;p=thirdparty%2FPython%2Fcpython.git #5370: doc update about unpickling objects with custom __getattr__ etc. methods. --- diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index a99dc862f4da..f6b7ae42b303 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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^