blob: 0bb57c826aebb189f9dc81fdcb73895c01c78f73 [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{UserDict} ---
Fred Drake6bf37de1999-06-29 18:13:37 +00002 Class wrapper for dictionary objects}
3
Fred Drakeb91e9341998-07-23 17:59:49 +00004\declaremodule{standard}{UserDict}
Fred Drakeb91e9341998-07-23 17:59:49 +00005\modulesynopsis{Class wrapper for dictionary objects.}
6
Fred Draked5be3b72001-10-26 18:37:27 +00007
Raymond Hettinger31043cd2005-01-04 21:25:00 +00008The module defines a mixin, \class{DictMixin}, defining all dictionary
9methods for classes that already have a minimum mapping interface. This
10greatly simplifies writing classes that need to be substitutable for
Raymond Hettinger79947162002-11-15 06:46:14 +000011dictionaries (such as the shelve module).
12
Raymond Hettinger31043cd2005-01-04 21:25:00 +000013This also module defines a class, \class{UserDict}, that acts as a wrapper
14around dictionary objects. The need for this class has been largely
15supplanted by the ability to subclass directly from \class{dict} (a feature
16that became available starting with Python version 2.2). Prior to the
17introduction of \class{dict}, the \class{UserDict} class was used to
18create dictionary-like sub-classes that obtained new behaviors by overriding
19existing methods or adding new ones.
20
Raymond Hettinger79947162002-11-15 06:46:14 +000021The \module{UserDict} module defines the \class{UserDict} class
22and \class{DictMixin}:
Guido van Rossum7f3b0421997-03-27 14:56:18 +000023
Georg Brandl54d8b682005-06-25 21:03:52 +000024\begin{classdesc}{UserDict}{\optional{initialdata}}
25Class that simulates a dictionary. The instance's contents are kept
26in a regular dictionary, which is accessible via the \member{data}
27attribute of \class{UserDict} instances. If \var{initialdata} is
28provided, \member{data} is initialized with its contents; note that a
29reference to \var{initialdata} will not be kept, allowing it be used
30for other purposes. \note{For backward compatibility, instances of
31\class{UserDict} are not iterable.}
32\end{classdesc}
33
34\begin{classdesc}{IterableUserDict}{\optional{initialdata}}
35Subclass of \class{UserDict} that supports direct iteration (e.g.
36\code{for key in myDict}).
Fred Drake802a2021998-02-19 06:26:35 +000037\end{classdesc}
Guido van Rossum7f3b0421997-03-27 14:56:18 +000038
Fred Drake6bf37de1999-06-29 18:13:37 +000039In addition to supporting the methods and operations of mappings (see
Georg Brandl54d8b682005-06-25 21:03:52 +000040section \ref{typesmapping}), \class{UserDict} and
41\class{IterableUserDict} instances provide the following attribute:
Fred Drake6bf37de1999-06-29 18:13:37 +000042
Fred Drake1ce36041998-04-07 20:05:33 +000043\begin{memberdesc}{data}
44A real dictionary used to store the contents of the \class{UserDict}
45class.
46\end{memberdesc}
47
Raymond Hettinger79947162002-11-15 06:46:14 +000048\begin{classdesc}{DictMixin}{}
49Mixin defining all dictionary methods for classes that already have
Raymond Hettinger8ddc176e2002-11-18 04:34:10 +000050a minimum dictionary interface including \method{__getitem__()},
51\method{__setitem__()}, \method{__delitem__()}, and \method{keys()}.
Raymond Hettinger79947162002-11-15 06:46:14 +000052
53This mixin should be used as a superclass. Adding each of the
54above methods adds progressively more functionality. For instance,
Raymond Hettinger8ddc176e2002-11-18 04:34:10 +000055defining all but \method{__delitem__} will preclude only \method{pop}
56and \method{popitem} from the full interface.
Raymond Hettinger79947162002-11-15 06:46:14 +000057
Raymond Hettinger68804312005-01-01 00:28:46 +000058In addition to the four base methods, progressively more efficiency
Raymond Hettinger8ddc176e2002-11-18 04:34:10 +000059comes with defining \method{__contains__()}, \method{__iter__()}, and
60\method{iteritems()}.
Raymond Hettinger79947162002-11-15 06:46:14 +000061
Raymond Hettinger8ddc176e2002-11-18 04:34:10 +000062Since the mixin has no knowledge of the subclass constructor, it
63does not define \method{__init__()} or \method{copy()}.
Raymond Hettinger79947162002-11-15 06:46:14 +000064\end{classdesc}
65
Fred Drake1ce36041998-04-07 20:05:33 +000066
Fred Drake295da241998-08-10 19:42:37 +000067\section{\module{UserList} ---
Fred Drake6bf37de1999-06-29 18:13:37 +000068 Class wrapper for list objects}
Fred Drakeb91e9341998-07-23 17:59:49 +000069
Fred Drake6bf37de1999-06-29 18:13:37 +000070\declaremodule{standard}{UserList}
Fred Drakeb91e9341998-07-23 17:59:49 +000071\modulesynopsis{Class wrapper for list objects.}
72
Fred Drake1ce36041998-04-07 20:05:33 +000073
Fred Draked5be3b72001-10-26 18:37:27 +000074\note{This module is available for backward compatibility only. If
75you are writing code that does not need to work with versions of
76Python earlier than Python 2.2, please consider subclassing directly
77from the built-in \class{list} type.}
78
Fred Drake1ce36041998-04-07 20:05:33 +000079This module defines a class that acts as a wrapper around
80list objects. It is a useful base class for
81your own list-like classes, which can inherit from
82them and override existing methods or add new ones. In this way one
Thomas Woutersf8316632000-07-16 19:01:10 +000083can add new behaviors to lists.
Fred Drake1ce36041998-04-07 20:05:33 +000084
Fred Drake802a2021998-02-19 06:26:35 +000085The \module{UserList} module defines the \class{UserList} class:
Guido van Rossum7f3b0421997-03-27 14:56:18 +000086
Fred Drake802a2021998-02-19 06:26:35 +000087\begin{classdesc}{UserList}{\optional{list}}
Fred Drake2c4f5542000-10-10 22:00:03 +000088Class that simulates a list. The instance's
Guido van Rossum7f3b0421997-03-27 14:56:18 +000089contents are kept in a regular list, which is accessible via the
Fred Drake802a2021998-02-19 06:26:35 +000090\member{data} attribute of \class{UserList} instances. The instance's
Fred Drakefcda5601998-01-07 22:05:25 +000091contents are initially set to a copy of \var{list}, defaulting to the
Guido van Rossum7f3b0421997-03-27 14:56:18 +000092empty list \code{[]}. \var{list} can be either a regular Python list,
Fred Drake802a2021998-02-19 06:26:35 +000093or an instance of \class{UserList} (or a subclass).
94\end{classdesc}
Fred Drake1ce36041998-04-07 20:05:33 +000095
Fred Drake6bf37de1999-06-29 18:13:37 +000096In addition to supporting the methods and operations of mutable
97sequences (see section \ref{typesseq}), \class{UserList} instances
98provide the following attribute:
99
Fred Drake1ce36041998-04-07 20:05:33 +0000100\begin{memberdesc}{data}
101A real Python list object used to store the contents of the
102\class{UserList} class.
103\end{memberdesc}
Fred Drakea22b5762000-04-03 03:51:50 +0000104
Fred Drakec6243e42000-10-06 20:04:48 +0000105\strong{Subclassing requirements:}
106Subclasses of \class{UserList} are expect to offer a constructor which
107can be called with either no arguments or one argument. List
108operations which return a new sequence attempt to create an instance
109of the actual implementation class. To do so, it assumes that the
110constructor can be called with a single parameter, which is a sequence
111object used as a data source.
112
113If a derived class does not wish to comply with this requirement, all
114of the special methods supported by this class will need to be
115overridden; please consult the sources for information about the
116methods which need to be provided in that case.
117
118\versionchanged[Python versions 1.5.2 and 1.6 also required that the
119 constructor be callable with no parameters, and offer
120 a mutable \member{data} attribute. Earlier versions
121 of Python did not attempt to create instances of the
122 derived class]{2.0}
123
Fred Drakea22b5762000-04-03 03:51:50 +0000124
125\section{\module{UserString} ---
126 Class wrapper for string objects}
127
128\declaremodule{standard}{UserString}
129\modulesynopsis{Class wrapper for string objects.}
130\moduleauthor{Peter Funk}{pf@artcom-gmbh.de}
131\sectionauthor{Peter Funk}{pf@artcom-gmbh.de}
132
Fred Draked5be3b72001-10-26 18:37:27 +0000133\note{This \class{UserString} class from this module is available for
134backward compatibility only. If you are writing code that does not
135need to work with versions of Python earlier than Python 2.2, please
136consider subclassing directly from the built-in \class{str} type
137instead of using \class{UserString} (there is no built-in equivalent
138to \class{MutableString}).}
139
Fred Drake66c9f072000-10-10 20:58:48 +0000140This module defines a class that acts as a wrapper around string
141objects. It is a useful base class for your own string-like classes,
142which can inherit from them and override existing methods or add new
143ones. In this way one can add new behaviors to strings.
Fred Drakea22b5762000-04-03 03:51:50 +0000144
Fred Drake66c9f072000-10-10 20:58:48 +0000145It should be noted that these classes are highly inefficient compared
146to real string or Unicode objects; this is especially the case for
147\class{MutableString}.
148
149The \module{UserString} module defines the following classes:
Fred Drakea22b5762000-04-03 03:51:50 +0000150
151\begin{classdesc}{UserString}{\optional{sequence}}
Fred Drake2c4f5542000-10-10 22:00:03 +0000152Class that simulates a string or a Unicode string
Fred Drake66c9f072000-10-10 20:58:48 +0000153object. The instance's content is kept in a regular string or Unicode
154string object, which is accessible via the \member{data} attribute of
155\class{UserString} instances. The instance's contents are initially
156set to a copy of \var{sequence}. \var{sequence} can be either a
157regular Python string or Unicode string, an instance of
158\class{UserString} (or a subclass) or an arbitrary sequence which can
159be converted into a string using the built-in \function{str()} function.
Fred Drakea22b5762000-04-03 03:51:50 +0000160\end{classdesc}
161
Fred Drakea22b5762000-04-03 03:51:50 +0000162\begin{classdesc}{MutableString}{\optional{sequence}}
163This class is derived from the \class{UserString} above and redefines
164strings to be \emph{mutable}. Mutable strings can't be used as
165dictionary keys, because dictionaries require \emph{immutable} objects as
166keys. The main intention of this class is to serve as an educational
167example for inheritance and necessity to remove (override) the
Fred Drake66c9f072000-10-10 20:58:48 +0000168\method{__hash__()} method in order to trap attempts to use a
Fred Drakea22b5762000-04-03 03:51:50 +0000169mutable object as dictionary key, which would be otherwise very
Thomas Woutersf8316632000-07-16 19:01:10 +0000170error prone and hard to track down.
Fred Drakea22b5762000-04-03 03:51:50 +0000171\end{classdesc}
Fred Drake621d2be2000-09-09 03:23:50 +0000172
Fred Drake66c9f072000-10-10 20:58:48 +0000173In addition to supporting the methods and operations of string and
174Unicode objects (see section \ref{string-methods}, ``String
175Methods''), \class{UserString} instances provide the following
176attribute:
Fred Drake621d2be2000-09-09 03:23:50 +0000177
178\begin{memberdesc}{data}
179A real Python string or Unicode object used to store the content of the
180\class{UserString} class.
181\end{memberdesc}