| \section{\module{UserDict} --- |
| Class wrapper for dictionary objects} |
| |
| \declaremodule{standard}{UserDict} |
| \modulesynopsis{Class wrapper for dictionary objects.} |
| |
| \note{This module is available for backward compatibility only. If |
| you are writing code that does not need to work with versions of |
| Python earlier than Python 2.2, please consider subclassing directly |
| from the built-in \class{dict} type.} |
| |
| 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 behaviors to dictionaries. |
| |
| The module also defines a mixin defining all dictionary methods for |
| classes that already have a minimum mapping interface. This greatly |
| simplifies writing classes that need to be substitutable for |
| dictionaries (such as the shelve module). |
| |
| The \module{UserDict} module defines the \class{UserDict} class |
| and \class{DictMixin}: |
| |
| \begin{classdesc}{UserDict}{\optional{initialdata}} |
| Class 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 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} |
| |
| \begin{classdesc}{DictMixin}{} |
| Mixin defining all dictionary methods for classes that already have |
| a minimum dictionary interface including \method{__getitem__()}, |
| \method{__setitem__()}, \method{__delitem__()}, and \method{keys()}. |
| |
| This mixin should be used as a superclass. Adding each of the |
| above methods adds progressively more functionality. For instance, |
| defining all but \method{__delitem__} will preclude only \method{pop} |
| and \method{popitem} from the full interface. |
| |
| In addition to the four base methods, progessively more efficiency |
| comes with defining \method{__contains__()}, \method{__iter__()}, and |
| \method{iteritems()}. |
| |
| Since the mixin has no knowledge of the subclass constructor, it |
| does not define \method{__init__()} or \method{copy()}. |
| \end{classdesc} |
| |
| |
| \section{\module{UserList} --- |
| Class wrapper for list objects} |
| |
| \declaremodule{standard}{UserList} |
| \modulesynopsis{Class wrapper for list objects.} |
| |
| |
| \note{This module is available for backward compatibility only. If |
| you are writing code that does not need to work with versions of |
| Python earlier than Python 2.2, please consider subclassing directly |
| from the built-in \class{list} type.} |
| |
| 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 behaviors to lists. |
| |
| The \module{UserList} module defines the \class{UserList} class: |
| |
| \begin{classdesc}{UserList}{\optional{list}} |
| Class 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} |
| |
| \strong{Subclassing requirements:} |
| Subclasses of \class{UserList} are expect to offer a constructor which |
| can be called with either no arguments or one argument. List |
| operations which return a new sequence attempt to create an instance |
| of the actual implementation class. To do so, it assumes that the |
| constructor can be called with a single parameter, which is a sequence |
| object used as a data source. |
| |
| If a derived class does not wish to comply with this requirement, all |
| of the special methods supported by this class will need to be |
| overridden; please consult the sources for information about the |
| methods which need to be provided in that case. |
| |
| \versionchanged[Python versions 1.5.2 and 1.6 also required that the |
| constructor be callable with no parameters, and offer |
| a mutable \member{data} attribute. Earlier versions |
| of Python did not attempt to create instances of the |
| derived class]{2.0} |
| |
| |
| \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} |
| |
| \note{This \class{UserString} class from this module is available for |
| backward compatibility only. If you are writing code that does not |
| need to work with versions of Python earlier than Python 2.2, please |
| consider subclassing directly from the built-in \class{str} type |
| instead of using \class{UserString} (there is no built-in equivalent |
| to \class{MutableString}).} |
| |
| 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 behaviors to strings. |
| |
| It should be noted that these classes are highly inefficient compared |
| to real string or Unicode objects; this is especially the case for |
| \class{MutableString}. |
| |
| The \module{UserString} module defines the following classes: |
| |
| \begin{classdesc}{UserString}{\optional{sequence}} |
| Class that simulates a string or a 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 using the built-in \function{str()} function. |
| \end{classdesc} |
| |
| \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 |
| \method{__hash__()} method in order to trap attempts to use a |
| mutable object as dictionary key, which would be otherwise very |
| error prone and hard to track down. |
| \end{classdesc} |
| |
| In addition to supporting the methods and operations of string and |
| Unicode objects (see section \ref{string-methods}, ``String |
| Methods''), \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} |