mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +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__()} | ||||
| 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 | ||||
| \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 | ||||
| \method{__getinitargs__()} method is called at | ||||
|  | @ -458,6 +458,21 @@ the instance. | |||
| \withsubitem{(copy protocol)}{\ttindex{__getinitargs__()}} | ||||
| \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__()}} | ||||
| \withsubitem{(instance attribute)}{ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fred Drake
						Fred Drake