Common Lisp the Language, 2nd Edition
The generic function reinitialize-instance may be used to change the values of slots according to initialization arguments.
The process of reinitialization changes the values of some slots and performs any user-defined actions.
Reinitialization does not modify the structure of an instance to add or delete slots, and it does not use any :initform forms to initialize slots.
The generic function reinitialize-instance may be called directly. It takes one required argument, the instance. It also takes any number of initialization arguments to be used by methods for reinitialize-instance or for shared-initialize. The arguments after the required instance must form an initialization argument list.
There is a system-supplied primary method for
reinitialize-instance whose parameter specializer is the class
standard-object. First this method checks the validity of
initialization arguments and signals an error if an initialization
argument is supplied that is not declared valid (see
Then it calls the generic function
shared-initialize with the following arguments: the instance,
nil, and the initialization arguments it received.