\section{\module{UserDict} --- Class wrapper for dictionary objects} \declaremodule{standard}{UserDict} \modulesynopsis{Class wrapper for dictionary objects.} This module defines a class that acts as a wrapper around dictionary objects. It is a useful base class for your own dictionary-like classes, which can inherit from them and override existing methods or add new ones. In this way one can add new behaviours to dictionaries. The \module{UserDict} module defines the \class{UserDict} class: \begin{classdesc}{UserDict}{\optional{intialdata}} Return a class instance that simulates a dictionary. The instance's contents are kept in a regular dictionary, which is accessible via the \member{data} attribute of \class{UserDict} instances. If \var{initialdata} is provided, \member{data} is initialized with its contents; note that a reference to \var{initialdata} will not be kept, allowing it be used used for other purposes. \end{classdesc} In addition to supporting the methods and operations of mappings (see section \ref{typesmapping}), \class{UserDict} instances provide the following attribute: \begin{memberdesc}{data} A real dictionary used to store the contents of the \class{UserDict} class. \end{memberdesc} \section{\module{UserList} --- Class wrapper for list objects} \declaremodule{standard}{UserList} \modulesynopsis{Class wrapper for list objects.} This module defines a class that acts as a wrapper around list objects. It is a useful base class for your own list-like classes, which can inherit from them and override existing methods or add new ones. In this way one can add new behaviours to lists. The \module{UserList} module defines the \class{UserList} class: \begin{classdesc}{UserList}{\optional{list}} Return a class instance that simulates a list. The instance's contents are kept in a regular list, which is accessible via the \member{data} attribute of \class{UserList} instances. The instance's contents are initially set to a copy of \var{list}, defaulting to the empty list \code{[]}. \var{list} can be either a regular Python list, or an instance of \class{UserList} (or a subclass). \end{classdesc} In addition to supporting the methods and operations of mutable sequences (see section \ref{typesseq}), \class{UserList} instances provide the following attribute: \begin{memberdesc}{data} A real Python list object used to store the contents of the \class{UserList} class. \end{memberdesc} \section{\module{UserString} --- Class wrapper for string objects} \declaremodule{standard}{UserString} \modulesynopsis{Class wrapper for string objects.} \moduleauthor{Peter Funk}{pf@artcom-gmbh.de} \sectionauthor{Peter Funk}{pf@artcom-gmbh.de} This module defines a class that acts as a wrapper around string objects. It is a useful base class for your own string-like classes, which can inherit from them and override existing methods or add new ones. In this way one can add new behaviours to strings. The \module{UserString} module defines the \class{UserString} class: \begin{classdesc}{UserString}{\optional{sequence}} Return a class instance that simulates a string or an unicode string object. The instance's content is kept in a regular string or unicode string object, which is accessible via the \member{data} attribute of \class{UserString} instances. The instance's contents are initially set to a copy of \var{sequence}. \var{sequence} can be either a regular Python string or unicode string, an instance of \class{UserString} (or a subclass) or an arbitrary sequence which can be converted into a string. supporting. \end{classdesc} In addition to supporting the methods and operations of string or unicode objects (see section \ref{typesseq}), \class{UserString} instances provide the following attribute: \begin{memberdesc}{data} A real Python string or unicode object used to store the content of the \class{UserString} class. \end{memberdesc} \begin{classdesc}{MutableString}{\optional{sequence}} This class is derived from the \class{UserString} above and redefines strings to be \emph{mutable}. Mutable strings can't be used as dictionary keys, because dictionaries require \emph{immutable} objects as keys. The main intention of this class is to serve as an educational example for inheritance and necessity to remove (override) the \function{__hash__} method in order to trap attempts to use a mutable object as dictionary key, which would be otherwise very errorprone and hard to track down. \end{classdesc}