Commit 804bb191 authored by Fred Drake's avatar Fred Drake

- note that __getinitargs__() is only for old-style classes

- describe __getnewargs__()
(closes SF bug #873246)
parent d77edfba
...@@ -448,8 +448,8 @@ for more details. ...@@ -448,8 +448,8 @@ for more details.
When a pickled class instance is unpickled, its \method{__init__()} When a pickled class instance is unpickled, its \method{__init__()}
method is normally \emph{not} invoked. If it is desirable that the method is normally \emph{not} invoked. If it is desirable that the
\method{__init__()} method be called on unpickling, a class can define \method{__init__()} method be called on unpickling, an old-style class
a method \method{__getinitargs__()}, which should return a can define a method \method{__getinitargs__()}, which should return a
\emph{tuple} containing the arguments to be passed to the class \emph{tuple} containing the arguments to be passed to the class
constructor (i.e. \method{__init__()}). The constructor (i.e. \method{__init__()}). The
\method{__getinitargs__()} method is called at \method{__getinitargs__()} method is called at
...@@ -458,6 +458,21 @@ the instance. ...@@ -458,6 +458,21 @@ the instance.
\withsubitem{(copy protocol)}{\ttindex{__getinitargs__()}} \withsubitem{(copy protocol)}{\ttindex{__getinitargs__()}}
\withsubitem{(instance constructor)}{\ttindex{__init__()}} \withsubitem{(instance constructor)}{\ttindex{__init__()}}
New-style types can provide a \method{__getnewargs__()} method that is
used for protocol 2. Implementing this method is needed if the type
establishes some internal invariants when the instance is created, or
if the memory allocation is affected by the values passed to the
\method{__new__()} method for the type (as it is for tuples and
strings). Instances of a new-style type \class{C} are created using
\begin{alltt}
obj = C.__new__(C, *\var{args})
\end{alltt}
where \var{args} is the result of calling \method{__getnewargs__()} on
the original object; if there is no \method{__getnewargs__()}, an
empty tuple is assumed.
\withsubitem{(copy protocol)}{ \withsubitem{(copy protocol)}{
\ttindex{__getstate__()}\ttindex{__setstate__()}} \ttindex{__getstate__()}\ttindex{__setstate__()}}
\withsubitem{(instance attribute)}{ \withsubitem{(instance attribute)}{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment