| |
| :mod:`UserDict` --- Class wrapper for dictionary objects |
| ======================================================== |
| |
| .. module:: UserDict |
| :synopsis: Class wrapper for dictionary objects. |
| |
| |
| The module defines a mixin, :class:`DictMixin`, 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). |
| |
| This also module defines a class, :class:`UserDict`, that acts as a wrapper |
| around dictionary objects. The need for this class has been largely supplanted |
| by the ability to subclass directly from :class:`dict` (a feature that became |
| available starting with Python version 2.2). Prior to the introduction of |
| :class:`dict`, the :class:`UserDict` class was used to create dictionary-like |
| sub-classes that obtained new behaviors by overriding existing methods or adding |
| new ones. |
| |
| The :mod:`UserDict` module defines the :class:`UserDict` class and |
| :class:`DictMixin`: |
| |
| |
| .. class:: UserDict([initialdata]) |
| |
| Class that simulates a dictionary. The instance's contents are kept in a |
| regular dictionary, which is accessible via the :attr:`data` attribute of |
| :class:`UserDict` instances. If *initialdata* is provided, :attr:`data` is |
| initialized with its contents; note that a reference to *initialdata* will not |
| be kept, allowing it be used for other purposes. |
| |
| .. note:: |
| |
| For backward compatibility, instances of :class:`UserDict` are not iterable. |
| |
| |
| .. class:: IterableUserDict([initialdata]) |
| |
| Subclass of :class:`UserDict` that supports direct iteration (e.g. ``for key in |
| myDict``). |
| |
| In addition to supporting the methods and operations of mappings (see section |
| :ref:`typesmapping`), :class:`UserDict` and :class:`IterableUserDict` instances |
| provide the following attribute: |
| |
| |
| .. attribute:: IterableUserDict.data |
| |
| A real dictionary used to store the contents of the :class:`UserDict` class. |
| |
| |
| .. class:: DictMixin() |
| |
| Mixin defining all dictionary methods for classes that already have a minimum |
| dictionary interface including :meth:`__getitem__`, :meth:`__setitem__`, |
| :meth:`__delitem__`, and :meth:`keys`. |
| |
| This mixin should be used as a superclass. Adding each of the above methods |
| adds progressively more functionality. For instance, defining all but |
| :meth:`__delitem__` will preclude only :meth:`pop` and :meth:`popitem` from the |
| full interface. |
| |
| In addition to the four base methods, progressively more efficiency comes with |
| defining :meth:`__contains__`, :meth:`__iter__`, and :meth:`iteritems`. |
| |
| Since the mixin has no knowledge of the subclass constructor, it does not define |
| :meth:`__init__` or :meth:`copy`. |
| |
| |
| :mod:`UserList` --- Class wrapper for list objects |
| ================================================== |
| |
| .. module:: UserList |
| :synopsis: 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 :mod:`UserList` module defines the :class:`UserList` class: |
| |
| |
| .. class:: UserList([list]) |
| |
| Class that simulates a list. The instance's contents are kept in a regular |
| list, which is accessible via the :attr:`data` attribute of :class:`UserList` |
| instances. The instance's contents are initially set to a copy of *list*, |
| defaulting to the empty list ``[]``. *list* can be any iterable, e.g. a |
| real Python list or a :class:`UserList` object. |
| |
| In addition to supporting the methods and operations of mutable sequences (see |
| section :ref:`typesseq`), :class:`UserList` instances provide the following |
| attribute: |
| |
| |
| .. attribute:: UserList.data |
| |
| A real Python list object used to store the contents of the :class:`UserList` |
| class. |
| |
| **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:: 2.0 |
| Python versions 1.5.2 and 1.6 also required that the constructor be callable |
| with no parameters, and offer a mutable :attr:`data` attribute. Earlier |
| versions of Python did not attempt to create instances of the derived class. |
| |
| |
| :mod:`UserString` --- Class wrapper for string objects |
| ====================================================== |
| |
| .. module:: UserString |
| :synopsis: 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 :mod:`UserString` module defines the following classes: |
| |
| |
| .. class:: UserString([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 :attr:`data` attribute of :class:`UserString` instances. The |
| instance's contents are initially set to a copy of *sequence*. *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 :func:`str` function. |
| |
| |
| .. class:: MutableString([sequence]) |
| |
| This class is derived from the :class:`UserString` above and redefines strings |
| to be *mutable*. Mutable strings can't be used as dictionary keys, because |
| dictionaries require *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 :meth:`__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. |
| |
| In addition to supporting the methods and operations of string and Unicode |
| objects (see section :ref:`string-methods`), :class:`UserString` instances |
| provide the following attribute: |
| |
| |
| .. attribute:: MutableString.data |
| |
| A real Python string or Unicode object used to store the content of the |
| :class:`UserString` class. |
| |