\section{Standard Module \module{UserDict}}
\stmodindex{UserDict}
\label{module-UserDict}

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}{}
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.
\end{classdesc}

\begin{memberdesc}{data}
A real dictionary used to store the contents of the \class{UserDict}
class.
\end{memberdesc}


\section{Standard Module \module{UserList}}
\stmodindex{UserList}
\label{module-UserList}

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}

\begin{memberdesc}{data}
A real Python list object used to store the contents of the
\class{UserList} class.
\end{memberdesc}
