[Python-checkins] python/dist/src/Doc/lib libpickle.tex,1.47,1.48

fdrake at users.sourceforge.net fdrake at users.sourceforge.net
Wed May 5 00:54:40 EDT 2004


Update of /cvsroot/python/python/dist/src/Doc/lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12835

Modified Files:
	libpickle.tex 
Log Message:
- note that __getinitargs__() is only for old-style classes
- describe __getnewargs__()
(closes SF bug #873246)


Index: libpickle.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/lib/libpickle.tex,v
retrieving revision 1.47
retrieving revision 1.48
diff -C2 -d -r1.47 -r1.48
*** libpickle.tex	8 Jan 2004 15:01:08 -0000	1.47
--- libpickle.tex	5 May 2004 04:54:37 -0000	1.48
***************
*** 449,454 ****
  When a pickled class instance is unpickled, its \method{__init__()}
  method is normally \emph{not} invoked.  If it is desirable that the
! \method{__init__()} method be called on unpickling, a class can define
! a method \method{__getinitargs__()}, which should return a
  \emph{tuple} containing the arguments to be passed to the class
  constructor (i.e. \method{__init__()}).  The
--- 449,454 ----
  When a pickled class instance is unpickled, its \method{__init__()}
  method is normally \emph{not} invoked.  If it is desirable that the
! \method{__init__()} method be called on unpickling, an old-style class
! can define a method \method{__getinitargs__()}, which should return a
  \emph{tuple} containing the arguments to be passed to the class
  constructor (i.e. \method{__init__()}).  The
***************
*** 459,462 ****
--- 459,477 ----
  \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)}{
    \ttindex{__getstate__()}\ttindex{__setstate__()}}




More information about the Python-checkins mailing list