mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
- note that __getinitargs__() is only for old-style classes
- describe __getnewargs__() (closes SF bug #873246)
This commit is contained in:
parent
04d92c37f2
commit
0de77d1d6e
1 changed files with 17 additions and 2 deletions
|
@ -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.
|
||||||
\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)}{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue