symbian-qemu-0.9.1-12/python-2.6.1/Doc/library/userdict.rst
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 
       
     2 :mod:`UserDict` --- Class wrapper for dictionary objects
       
     3 ========================================================
       
     4 
       
     5 .. module:: UserDict
       
     6    :synopsis: Class wrapper for dictionary objects.
       
     7 
       
     8 
       
     9 The module defines a mixin,  :class:`DictMixin`, defining all dictionary methods
       
    10 for classes that already have a minimum mapping interface.  This greatly
       
    11 simplifies writing classes that need to be substitutable for dictionaries (such
       
    12 as the shelve module).
       
    13 
       
    14 This module also defines a class, :class:`UserDict`, that acts as a wrapper
       
    15 around dictionary objects.  The need for this class has been largely supplanted
       
    16 by the ability to subclass directly from :class:`dict` (a feature that became
       
    17 available starting with Python version 2.2).  Prior to the introduction of
       
    18 :class:`dict`, the :class:`UserDict` class was used to create dictionary-like
       
    19 sub-classes that obtained new behaviors by overriding existing methods or adding
       
    20 new ones.
       
    21 
       
    22 The :mod:`UserDict` module defines the :class:`UserDict` class and
       
    23 :class:`DictMixin`:
       
    24 
       
    25 
       
    26 .. class:: UserDict([initialdata])
       
    27 
       
    28    Class that simulates a dictionary.  The instance's contents are kept in a
       
    29    regular dictionary, which is accessible via the :attr:`data` attribute of
       
    30    :class:`UserDict` instances.  If *initialdata* is provided, :attr:`data` is
       
    31    initialized with its contents; note that a reference to *initialdata* will not
       
    32    be kept, allowing it be used for other purposes.
       
    33 
       
    34    .. note::
       
    35 
       
    36       For backward compatibility, instances of :class:`UserDict` are not iterable.
       
    37 
       
    38 
       
    39 .. class:: IterableUserDict([initialdata])
       
    40 
       
    41    Subclass of :class:`UserDict` that supports direct iteration (e.g.  ``for key in
       
    42    myDict``).
       
    43 
       
    44 In addition to supporting the methods and operations of mappings (see section
       
    45 :ref:`typesmapping`), :class:`UserDict` and :class:`IterableUserDict` instances
       
    46 provide the following attribute:
       
    47 
       
    48 
       
    49 .. attribute:: IterableUserDict.data
       
    50 
       
    51    A real dictionary used to store the contents of the :class:`UserDict` class.
       
    52 
       
    53 
       
    54 .. class:: DictMixin()
       
    55 
       
    56    Mixin defining all dictionary methods for classes that already have a minimum
       
    57    dictionary interface including :meth:`__getitem__`, :meth:`__setitem__`,
       
    58    :meth:`__delitem__`, and :meth:`keys`.
       
    59 
       
    60    This mixin should be used as a superclass.  Adding each of the above methods
       
    61    adds progressively more functionality.  For instance, defining all but
       
    62    :meth:`__delitem__` will preclude only :meth:`pop` and :meth:`popitem` from the
       
    63    full interface.
       
    64 
       
    65    In addition to the four base methods, progressively more efficiency comes with
       
    66    defining :meth:`__contains__`, :meth:`__iter__`, and :meth:`iteritems`.
       
    67 
       
    68    Since the mixin has no knowledge of the subclass constructor, it does not define
       
    69    :meth:`__init__` or :meth:`copy`.
       
    70 
       
    71    Starting with Python version 2.6, it is recommended to use
       
    72    :class:`collections.MutableMapping` instead of :class:`DictMixin`.
       
    73 
       
    74 :mod:`UserList` --- Class wrapper for list objects
       
    75 ==================================================
       
    76 
       
    77 .. module:: UserList
       
    78    :synopsis: Class wrapper for list objects.
       
    79 
       
    80 
       
    81 .. note::
       
    82 
       
    83    This module is available for backward compatibility only.  If you are writing
       
    84    code that does not need to work with versions of Python earlier than Python 2.2,
       
    85    please consider subclassing directly from the built-in :class:`list` type.
       
    86 
       
    87 This module defines a class that acts as a wrapper around list objects.  It is a
       
    88 useful base class for your own list-like classes, which can inherit from them
       
    89 and override existing methods or add new ones.  In this way one can add new
       
    90 behaviors to lists.
       
    91 
       
    92 The :mod:`UserList` module defines the :class:`UserList` class:
       
    93 
       
    94 
       
    95 .. class:: UserList([list])
       
    96 
       
    97    Class that simulates a list.  The instance's contents are kept in a regular
       
    98    list, which is accessible via the :attr:`data` attribute of :class:`UserList`
       
    99    instances.  The instance's contents are initially set to a copy of *list*,
       
   100    defaulting to the empty list ``[]``.  *list* can be any iterable, e.g. a
       
   101    real Python list or a :class:`UserList` object.
       
   102 
       
   103    .. note::
       
   104       The :class:`UserList` class has been moved to the :mod:`collections`
       
   105       module in Python 3.0. The :term:`2to3` tool will automatically adapt
       
   106       imports when converting your sources to 3.0.
       
   107 
       
   108 
       
   109 In addition to supporting the methods and operations of mutable sequences (see
       
   110 section :ref:`typesseq`), :class:`UserList` instances provide the following
       
   111 attribute:
       
   112 
       
   113 
       
   114 .. attribute:: UserList.data
       
   115 
       
   116    A real Python list object used to store the contents of the :class:`UserList`
       
   117    class.
       
   118 
       
   119 **Subclassing requirements:** Subclasses of :class:`UserList` are expect to
       
   120 offer a constructor which can be called with either no arguments or one
       
   121 argument.  List operations which return a new sequence attempt to create an
       
   122 instance of the actual implementation class.  To do so, it assumes that the
       
   123 constructor can be called with a single parameter, which is a sequence object
       
   124 used as a data source.
       
   125 
       
   126 If a derived class does not wish to comply with this requirement, all of the
       
   127 special methods supported by this class will need to be overridden; please
       
   128 consult the sources for information about the methods which need to be provided
       
   129 in that case.
       
   130 
       
   131 .. versionchanged:: 2.0
       
   132    Python versions 1.5.2 and 1.6 also required that the constructor be callable
       
   133    with no parameters, and offer a mutable :attr:`data` attribute.  Earlier
       
   134    versions of Python did not attempt to create instances of the derived class.
       
   135 
       
   136 
       
   137 :mod:`UserString` --- Class wrapper for string objects
       
   138 ======================================================
       
   139 
       
   140 .. module:: UserString
       
   141    :synopsis: Class wrapper for string objects.
       
   142 .. moduleauthor:: Peter Funk <pf@artcom-gmbh.de>
       
   143 .. sectionauthor:: Peter Funk <pf@artcom-gmbh.de>
       
   144 
       
   145 
       
   146 .. note::
       
   147 
       
   148    This :class:`UserString` class from this module is available for backward
       
   149    compatibility only.  If you are writing code that does not need to work with
       
   150    versions of Python earlier than Python 2.2, please consider subclassing directly
       
   151    from the built-in :class:`str` type instead of using :class:`UserString` (there
       
   152    is no built-in equivalent to :class:`MutableString`).
       
   153 
       
   154 This module defines a class that acts as a wrapper around string objects.  It is
       
   155 a useful base class for your own string-like classes, which can inherit from
       
   156 them and override existing methods or add new ones.  In this way one can add new
       
   157 behaviors to strings.
       
   158 
       
   159 It should be noted that these classes are highly inefficient compared to real
       
   160 string or Unicode objects; this is especially the case for
       
   161 :class:`MutableString`.
       
   162 
       
   163 The :mod:`UserString` module defines the following classes:
       
   164 
       
   165 
       
   166 .. class:: UserString([sequence])
       
   167 
       
   168    Class that simulates a string or a Unicode string object.  The instance's
       
   169    content is kept in a regular string or Unicode string object, which is
       
   170    accessible via the :attr:`data` attribute of :class:`UserString` instances.  The
       
   171    instance's contents are initially set to a copy of *sequence*.  *sequence* can
       
   172    be either a regular Python string or Unicode string, an instance of
       
   173    :class:`UserString` (or a subclass) or an arbitrary sequence which can be
       
   174    converted into a string using the built-in :func:`str` function.
       
   175 
       
   176    .. note::
       
   177       The :class:`UserString` class has been moved to the :mod:`collections`
       
   178       module in Python 3.0. The :term:`2to3` tool will automatically adapt
       
   179       imports when converting your sources to 3.0.
       
   180 
       
   181 
       
   182 
       
   183 .. class:: MutableString([sequence])
       
   184 
       
   185    This class is derived from the :class:`UserString` above and redefines strings
       
   186    to be *mutable*.  Mutable strings can't be used as dictionary keys, because
       
   187    dictionaries require *immutable* objects as keys.  The main intention of this
       
   188    class is to serve as an educational example for inheritance and necessity to
       
   189    remove (override) the :meth:`__hash__` method in order to trap attempts to use a
       
   190    mutable object as dictionary key, which would be otherwise very error prone and
       
   191    hard to track down.
       
   192 
       
   193    .. deprecated:: 2.6
       
   194       The :class:`MutableString` class has been removed in Python 3.0.
       
   195 
       
   196 In addition to supporting the methods and operations of string and Unicode
       
   197 objects (see section :ref:`string-methods`), :class:`UserString` instances
       
   198 provide the following attribute:
       
   199 
       
   200 
       
   201 .. attribute:: MutableString.data
       
   202 
       
   203    A real Python string or Unicode object used to store the content of the
       
   204    :class:`UserString` class.
       
   205