Clarify the interpretation of the __getstate__() return value for

new-style classes.
Closes SF bug #637941.
This commit is contained in:
Fred Drake 2002-11-27 05:26:46 +00:00
parent a01fa26396
commit e9cfcef71e
1 changed files with 9 additions and 3 deletions

View File

@ -412,13 +412,19 @@ Upon unpickling, if the class also defines the method
\method{__setstate__()}, it is called with the unpickled \method{__setstate__()}, it is called with the unpickled
state\footnote{These methods can also be used to implement copying state\footnote{These methods can also be used to implement copying
class instances.}. If there is no \method{__setstate__()} method, the class instances.}. If there is no \method{__setstate__()} method, the
pickled object must be a dictionary and its items are assigned to the pickled state must be a dictionary and its items are assigned to the
new instance's dictionary. If a class defines both new instance's dictionary. If a class defines both
\method{__getstate__()} and \method{__setstate__()}, the state object \method{__getstate__()} and \method{__setstate__()}, the state object
needn't be a dictionary and these methods can do what they needn't be a dictionary and these methods can do what they
want\footnote{This protocol is also used by the shallow and deep want.\footnote{This protocol is also used by the shallow and deep
copying operations defined in the copying operations defined in the
\refmodule{copy} module.}. \refmodule{copy} module.}
\begin{notice}[warning]
For new-style classes, if \method{__getstate__()} returns a false
value, the \method{__setstate__()} method will not be called.
\end{notice}
\subsubsection{Pickling and unpickling extension types} \subsubsection{Pickling and unpickling extension types}