| Fred Drake | 295da24 | 1998-08-10 19:42:37 +0000 | [diff] [blame] | 1 | \section{\module{UserDict} --- | 
| Fred Drake | 6bf37de | 1999-06-29 18:13:37 +0000 | [diff] [blame] | 2 |          Class wrapper for dictionary objects} | 
 | 3 |  | 
| Fred Drake | b91e934 | 1998-07-23 17:59:49 +0000 | [diff] [blame] | 4 | \declaremodule{standard}{UserDict} | 
| Fred Drake | b91e934 | 1998-07-23 17:59:49 +0000 | [diff] [blame] | 5 | \modulesynopsis{Class wrapper for dictionary objects.} | 
 | 6 |  | 
| Fred Drake | 1ce3604 | 1998-04-07 20:05:33 +0000 | [diff] [blame] | 7 | This module defines a class that acts as a wrapper around | 
 | 8 | dictionary objects.  It is a useful base class for | 
 | 9 | your own dictionary-like classes, which can inherit from | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 10 | them and override existing methods or add new ones.  In this way one | 
| Thomas Wouters | f831663 | 2000-07-16 19:01:10 +0000 | [diff] [blame] | 11 | can add new behaviors to dictionaries. | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 12 |  | 
| Fred Drake | 802a202 | 1998-02-19 06:26:35 +0000 | [diff] [blame] | 13 | The \module{UserDict} module defines the \class{UserDict} class: | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 14 |  | 
| Thomas Wouters | f831663 | 2000-07-16 19:01:10 +0000 | [diff] [blame] | 15 | \begin{classdesc}{UserDict}{\optional{initialdata}} | 
| Fred Drake | 2c4f554 | 2000-10-10 22:00:03 +0000 | [diff] [blame] | 16 | Class that simulates a dictionary.  The instance's | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 17 | contents are kept in a regular dictionary, which is accessible via the | 
| Fred Drake | 8d21243 | 1999-07-26 15:45:52 +0000 | [diff] [blame] | 18 | \member{data} attribute of \class{UserDict} instances.  If | 
 | 19 | \var{initialdata} is provided, \member{data} is initialized with its | 
 | 20 | contents; note that a reference to \var{initialdata} will not be kept,  | 
 | 21 | allowing it be used used for other purposes. | 
| Fred Drake | 802a202 | 1998-02-19 06:26:35 +0000 | [diff] [blame] | 22 | \end{classdesc} | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 23 |  | 
| Fred Drake | 6bf37de | 1999-06-29 18:13:37 +0000 | [diff] [blame] | 24 | In addition to supporting the methods and operations of mappings (see | 
 | 25 | section \ref{typesmapping}), \class{UserDict} instances provide the | 
 | 26 | following attribute: | 
 | 27 |  | 
| Fred Drake | 1ce3604 | 1998-04-07 20:05:33 +0000 | [diff] [blame] | 28 | \begin{memberdesc}{data} | 
 | 29 | A real dictionary used to store the contents of the \class{UserDict} | 
 | 30 | class. | 
 | 31 | \end{memberdesc} | 
 | 32 |  | 
 | 33 |  | 
| Fred Drake | 295da24 | 1998-08-10 19:42:37 +0000 | [diff] [blame] | 34 | \section{\module{UserList} --- | 
| Fred Drake | 6bf37de | 1999-06-29 18:13:37 +0000 | [diff] [blame] | 35 |          Class wrapper for list objects} | 
| Fred Drake | b91e934 | 1998-07-23 17:59:49 +0000 | [diff] [blame] | 36 |  | 
| Fred Drake | 6bf37de | 1999-06-29 18:13:37 +0000 | [diff] [blame] | 37 | \declaremodule{standard}{UserList} | 
| Fred Drake | b91e934 | 1998-07-23 17:59:49 +0000 | [diff] [blame] | 38 | \modulesynopsis{Class wrapper for list objects.} | 
 | 39 |  | 
| Fred Drake | 1ce3604 | 1998-04-07 20:05:33 +0000 | [diff] [blame] | 40 |  | 
 | 41 | This module defines a class that acts as a wrapper around | 
 | 42 | list objects.  It is a useful base class for | 
 | 43 | your own list-like classes, which can inherit from | 
 | 44 | them and override existing methods or add new ones.  In this way one | 
| Thomas Wouters | f831663 | 2000-07-16 19:01:10 +0000 | [diff] [blame] | 45 | can add new behaviors to lists. | 
| Fred Drake | 1ce3604 | 1998-04-07 20:05:33 +0000 | [diff] [blame] | 46 |  | 
| Fred Drake | 802a202 | 1998-02-19 06:26:35 +0000 | [diff] [blame] | 47 | The \module{UserList} module defines the \class{UserList} class: | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 48 |  | 
| Fred Drake | 802a202 | 1998-02-19 06:26:35 +0000 | [diff] [blame] | 49 | \begin{classdesc}{UserList}{\optional{list}} | 
| Fred Drake | 2c4f554 | 2000-10-10 22:00:03 +0000 | [diff] [blame] | 50 | Class that simulates a list.  The instance's | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 51 | contents are kept in a regular list, which is accessible via the | 
| Fred Drake | 802a202 | 1998-02-19 06:26:35 +0000 | [diff] [blame] | 52 | \member{data} attribute of \class{UserList} instances.  The instance's | 
| Fred Drake | fcda560 | 1998-01-07 22:05:25 +0000 | [diff] [blame] | 53 | contents are initially set to a copy of \var{list}, defaulting to the | 
| Guido van Rossum | 7f3b042 | 1997-03-27 14:56:18 +0000 | [diff] [blame] | 54 | empty list \code{[]}.  \var{list} can be either a regular Python list, | 
| Fred Drake | 802a202 | 1998-02-19 06:26:35 +0000 | [diff] [blame] | 55 | or an instance of \class{UserList} (or a subclass). | 
 | 56 | \end{classdesc} | 
| Fred Drake | 1ce3604 | 1998-04-07 20:05:33 +0000 | [diff] [blame] | 57 |  | 
| Fred Drake | 6bf37de | 1999-06-29 18:13:37 +0000 | [diff] [blame] | 58 | In addition to supporting the methods and operations of mutable | 
 | 59 | sequences (see section \ref{typesseq}), \class{UserList} instances | 
 | 60 | provide the following attribute: | 
 | 61 |  | 
| Fred Drake | 1ce3604 | 1998-04-07 20:05:33 +0000 | [diff] [blame] | 62 | \begin{memberdesc}{data} | 
 | 63 | A real Python list object used to store the contents of the | 
 | 64 | \class{UserList} class. | 
 | 65 | \end{memberdesc} | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 66 |  | 
| Fred Drake | c6243e4 | 2000-10-06 20:04:48 +0000 | [diff] [blame] | 67 | \strong{Subclassing requirements:} | 
 | 68 | Subclasses of \class{UserList} are expect to offer a constructor which | 
 | 69 | can be called with either no arguments or one argument.  List | 
 | 70 | operations which return a new sequence attempt to create an instance | 
 | 71 | of the actual implementation class.  To do so, it assumes that the | 
 | 72 | constructor can be called with a single parameter, which is a sequence | 
 | 73 | object used as a data source. | 
 | 74 |  | 
 | 75 | If a derived class does not wish to comply with this requirement, all | 
 | 76 | of the special methods supported by this class will need to be | 
 | 77 | overridden; please consult the sources for information about the | 
 | 78 | methods which need to be provided in that case. | 
 | 79 |  | 
 | 80 | \versionchanged[Python versions 1.5.2 and 1.6 also required that the | 
 | 81 |                 constructor be callable with no parameters, and offer | 
 | 82 |                 a mutable \member{data} attribute.  Earlier versions | 
 | 83 |                 of Python did not attempt to create instances of the | 
 | 84 |                 derived class]{2.0} | 
 | 85 |  | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 86 |  | 
 | 87 | \section{\module{UserString} --- | 
 | 88 |          Class wrapper for string objects} | 
 | 89 |  | 
 | 90 | \declaremodule{standard}{UserString} | 
 | 91 | \modulesynopsis{Class wrapper for string objects.} | 
 | 92 | \moduleauthor{Peter Funk}{pf@artcom-gmbh.de} | 
 | 93 | \sectionauthor{Peter Funk}{pf@artcom-gmbh.de} | 
 | 94 |  | 
| Fred Drake | 66c9f07 | 2000-10-10 20:58:48 +0000 | [diff] [blame] | 95 | This module defines a class that acts as a wrapper around string | 
 | 96 | objects.  It is a useful base class for your own string-like classes, | 
 | 97 | which can inherit from them and override existing methods or add new | 
 | 98 | ones.  In this way one can add new behaviors to strings. | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 99 |  | 
| Fred Drake | 66c9f07 | 2000-10-10 20:58:48 +0000 | [diff] [blame] | 100 | It should be noted that these classes are highly inefficient compared | 
 | 101 | to real string or Unicode objects; this is especially the case for | 
 | 102 | \class{MutableString}. | 
 | 103 |  | 
 | 104 | The \module{UserString} module defines the following classes: | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 105 |  | 
 | 106 | \begin{classdesc}{UserString}{\optional{sequence}} | 
| Fred Drake | 2c4f554 | 2000-10-10 22:00:03 +0000 | [diff] [blame] | 107 | Class that simulates a string or a Unicode string | 
| Fred Drake | 66c9f07 | 2000-10-10 20:58:48 +0000 | [diff] [blame] | 108 | object.  The instance's content is kept in a regular string or Unicode | 
 | 109 | string object, which is accessible via the \member{data} attribute of | 
 | 110 | \class{UserString} instances.  The instance's contents are initially | 
 | 111 | set to a copy of \var{sequence}.  \var{sequence} can be either a | 
 | 112 | regular Python string or Unicode string, an instance of | 
 | 113 | \class{UserString} (or a subclass) or an arbitrary sequence which can | 
 | 114 | be converted into a string using the built-in \function{str()} function. | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 115 | \end{classdesc} | 
 | 116 |  | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 117 | \begin{classdesc}{MutableString}{\optional{sequence}} | 
 | 118 | This class is derived from the \class{UserString} above and redefines | 
 | 119 | strings to be \emph{mutable}.  Mutable strings can't be used as | 
 | 120 | dictionary keys, because dictionaries require \emph{immutable} objects as | 
 | 121 | keys.  The main intention of this class is to serve as an educational | 
 | 122 | example for inheritance and necessity to remove (override) the | 
| Fred Drake | 66c9f07 | 2000-10-10 20:58:48 +0000 | [diff] [blame] | 123 | \method{__hash__()} method in order to trap attempts to use a | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 124 | mutable object as dictionary key, which would be otherwise very | 
| Thomas Wouters | f831663 | 2000-07-16 19:01:10 +0000 | [diff] [blame] | 125 | error prone and hard to track down. | 
| Fred Drake | a22b576 | 2000-04-03 03:51:50 +0000 | [diff] [blame] | 126 | \end{classdesc} | 
| Fred Drake | 621d2be | 2000-09-09 03:23:50 +0000 | [diff] [blame] | 127 |  | 
| Fred Drake | 66c9f07 | 2000-10-10 20:58:48 +0000 | [diff] [blame] | 128 | In addition to supporting the methods and operations of string and | 
 | 129 | Unicode objects (see section \ref{string-methods}, ``String | 
 | 130 | Methods''), \class{UserString} instances provide the following | 
 | 131 | attribute: | 
| Fred Drake | 621d2be | 2000-09-09 03:23:50 +0000 | [diff] [blame] | 132 |  | 
 | 133 | \begin{memberdesc}{data} | 
 | 134 | A real Python string or Unicode object used to store the content of the | 
 | 135 | \class{UserString} class. | 
 | 136 | \end{memberdesc} |